我尝试使用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)
...............
答案 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):
答案 2 :(得分:1)
使用特定jenkins服务器的管道代码生成器生成代码,在我的情况下由于版本不匹配而发生这种情况,我们使用不同的版本进行开发然后生产,每个使用不同的语法来调用作业并通过参数。