Jenkins Pipeline - 使用参数构建

and*_*ndi 4 jenkins jenkins-pipeline

我正在尝试使用jenkins管道的构建方法执行已定义的作业.这是一个简单的例子:

 build('jenkins-test-project-build', param1 : 'some-value')
Run Code Online (Sandbox Code Playgroud)

但是当我尝试执行它时,我收到一个错误:

java.lang.IllegalArgumentException: Expected named arguments but got [{param1=some-value}, jenkins-test-project-build]
at org.jenkinsci.plugins.workflow.cps.DSL.parseArgs(DSL.java:442)
at org.jenkinsci.plugins.workflow.cps.DSL.parseArgs(DSL.java:380)
at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:156)
at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:126)
...............
Run Code Online (Sandbox Code Playgroud)

Pom*_*m12 14

您的构建调用中有多个问题.

首先,正如sshepel提到的那样,如果你有多个参数,你应该命名你的参数(你可以忘记仅在你只使用默认参数时命名它job,例如build 'my-simple-job-without-params').

第二个问题是您没有正确传递参数.要将参数传递给下游作业,您应该使用named参数parameters并为其提供定义每个参数的对象数组,例如:

build job: 'jenkins-test-project-build', parameters: [[$class: 'StringParameterValue', name: 'param1', value: "some-value" ]]
Run Code Online (Sandbox Code Playgroud)

另请注意,在Groovy方法调用中,括号是可选的.

  • 我不得不使用稍微不同的语法来让参数传递给我工作:`build job:'jenkins-test-project-build',参数:[string(name:'param1',value:"some-value" )]` (5认同)

ssh*_*pel 9

您收到此错误,因为您没有传递应存储'jenkins-test-project-build'的属性的名称.

在您的情况下,您应该传递job属性.

build(job: 'jenkins-test-project-build', param1 : 'some-value')
Run Code Online (Sandbox Code Playgroud)

以下是可用选项列表(pipeline-build-step):

  • 工作
  • 参数(可选)
  • 传播(可选)
  • quietPeriod(可选)
  • 等待(可选)