Jenkins Pipeline - 使用参数构建

时间:2016-10-08 21:46:48

标签: jenkins jenkins-pipeline

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

 build('jenkins-test-project-build', param1 : 'some-value')

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

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)
...............

3 个答案:

答案 0 :(得分:14)

您的构建调用中存在多个问题。

首先,正如sshepel提到的那样,如果你有多个参数,你应该命名参数(只有当你只使用默认参数false时才会忘记命名,例如{ {1}})。

第二个问题是你没有正确传递参数。要将参数传递给下游作业,您应该使用名为job的参数,并为其指定一组对象,以定义您的每个参数,例如: :

build 'my-simple-job-without-params'

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

答案 1 :(得分:7)

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

在您的情况下,您应该传递作业属性。

build(job: 'jenkins-test-project-build', param1 : 'some-value')

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

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

答案 2 :(得分:1)

使用特定jenkins服务器的管道代码生成器生成代码,在我的情况下由于版本不匹配而发生这种情况,我们使用不同的版本进行开发然后生产,每个使用不同的语法来调用作业并通过参数。