当前位置: 首页 > 知识库问答 >
问题:

如何让ArtifactoryMavenBuild以变量名作为声明性Jenkins的参数运行?

苏昊英
2023-03-14

我正在尝试使用声明性语法编写Jenkins管道(如果我真的不能取得任何进展,我将切换到脚本)。然而,我不知道如何获取函数的返回值以存储到变量中,因此我可以将该变量用作下一个函数的参数。

我的管道阶段如下所示:

stage ('Build') {
   steps {
      def artServer = getArtifactoryServer(artifactoryServerID: 'my-server')
      def mvBuild = newMavenBuild()
      def buildInfo = newBuildInfo()
      ArtifactoryMavenBuild(mavenBuild: mvBuild, tool: "M3", pom: "pom.xml", goals: "-B clean test -Dmaven.test.failure.ignore", opts: "", buildInfo: buildInfo)
   }
}

我的错误日志是:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 19: Expected a step @ line 19, column 17.
                   def artServer = getArtifactoryServer(artifactoryServerID: 'GE-Propel-Artifactory')
                   ^

WorkflowScript: 20: Expected a step @ line 20, column 17.
                   def mvBuild = newMavenBuild()
                   ^

WorkflowScript: 21: Expected a step @ line 21, column 17.
                   def buildInfo = newBuildInfo()

ArtifactoryMavenBuild函数在我这样放置时工作:

artifactoryMavenBuild(mavenBuild: newMavenBuild(),工具:"M3",pom:"pom.xml",目标:"-B清洁测试-Dmaven.test.failure.ignore",选择:",buildInfo:newBuildInfo())

但我需要能够在以后的步骤中再次引用mvBuild和buildInfo。

Artifactory插件的声明性jenkins的文档在这里:https://jenkins.io/doc/pipeline/steps/artifactory/

共有1个答案

谷梁星雨
2023-03-14

尝试将您的脚本代码包装到一个< code>script {}步骤中,如下所示:

stage ('Build') {
  steps {
    script {
       def artServer = getArtifactoryServer(artifactoryServerID: 'my-server')
       def mvBuild = newMavenBuild()
       def buildInfo = newBuildInfo()
       ArtifactoryMavenBuild(mavenBuild: mvBuild, tool: "M3", pom: "pom.xml", goals: "-B clean test -Dmaven.test.failure.ignore", opts: "", buildInfo: buildInfo)
    }
  }
}
 类似资料:
  • 我查看了以下文档:https://docs.sonarqube.org/display/scan/analysy+with+sonarqube+scanner+for+jenkins 然而,我不能让它工作。首先,文档似乎需要更新,因为示例中的语法是错误的。在最新版本的声明性管道中,在-tag中是必需的。此外,-关键字只有在-标记中才会解析。 null

  • let和const是JavaScript里相对较新的变量声明方式。 像我们之前提到过的,let在很多方面与var是相似的,但是可以帮助大家避免在JavaScript里常见一些问题。 const是对let的一个增强,它能阻止对一个变量再次赋值。 因为TypeScript是JavaScript的超集,所以它本身就支持let和const。 下面我们会详细说明这些新的声明方式以及为什么推荐使用它们来代替v

  • 在 Gradle 领域模型中所有被增强的对象能够拥有自己定义的属性. 这包括,但不仅限于 projects , tasks , 还有 source sets . Project 对象可以添加,读取,更改扩展的属性. 另外,使用 ext 扩展块可以一次添加多个属性. 例子 13.3. 使用扩展属性 build.gradle apply plugin: "java" ext { springV

  • 问题内容: 如何在声明式管道的各个阶段之间传递变量? 在脚本化管道中,我收集的过程是写入一个临时文件,然后将该文件读入一个变量。 如何在声明管道中执行此操作? 例如,我想基于shell动作创建的变量来触发其他作业的构建。 问题答案: 如果要使用文件(由于脚本是生成所需值的东西),则可以如下所示使用。如果没有,请使用如下所示的选项:

  • 问题内容: 如何在mysql中声明变量,以便第二个查询可以使用它? 我想写一些像: 问题答案: MySQL中主要有三种类型的变量: 用户定义的变量 (以开头): 您可以访问任何用户定义的变量,而无需对其进行声明或初始化。如果引用的变量尚未初始化,则其值为和字符串类型。 您可以使用或语句来初始化变量: 要么 可以从一组有限的数据类型中为用户变量分配一个值:整数,十进制,浮点数,二进制或非二进制字符串

  • 问题内容: 我有一个Netezza查询,在其中我引用了一系列案例陈述中的几个日期。而不是每次我都想在开始时将一个变量置为一个变量并在整个查询中都使用它时,而不是替换所有这些日期。在SAS中,我会这样做: 问题答案: 不幸的是,Netezza中没有程序SQL扩展,您无法将这样的变量用作SQL语言本身的一部分。纯粹的SQL解决方案将涉及一些麻烦,例如加入CTE并返回该值。但是,NZSQL CLI确实允