Jenkins管道-使用参数构建

Jenkins管道-使用参数构建,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我正在尝试使用jenkins管道中的build方法执行一个已经定义的作业。 这是一个简单的例子: build('jenkins-test-project-build', param1 : 'some-value') 但当我尝试执行它时,我得到一个错误: java.lang.IllegalArgumentException: Expected named arguments but got [{param1=some-value}, jenkins-test-project-build] at

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

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

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

在您的情况下,您应该通过作业属性

build(job: 'jenkins-test-project-build', param1 : 'some-value')
以下是可用选项的列表()

  • 工作
  • 参数(可选)
  • 传播(可选)
  • 静止周期(可选)
  • 等待(可选)

构建调用中存在多个问题

首先,正如sshepel提到的,如果您有多个参数,您应该命名您的参数(只有当您只使用默认参数
作业
,例如
构建“没有参数的我的简单作业”
,您才可以忘记命名)

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

build job: 'jenkins-test-project-build', parameters: [[$class: 'StringParameterValue', name: 'param1', value: "some-value" ]]

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

使用特定jenkins服务器的管道代码生成器生成代码,在我的例子中,这是因为版本不匹配造成的,我们在开发和生产中使用不同的版本,每个版本都使用不同的语法来调用作业和传递参数。

确实如此。。在解决了第一个问题后,我发现了这个问题:D谢谢你的回答我不得不使用稍微不同的语法来让参数传递给我:
buildjob:'jenkins test project build',parameters:[字符串(名称:'param1',值:'some value”)]
我们如何通过选择parameter@RamakrishnaYelduti如果您的子管道具有
choice
参数,则可以在父管道中使用
字符串
参数。此外,如果要传递多个参数,则嵌套非常重要。看起来像这样。。。。参数:[…参数…],[…参数…],[…参数…],[…参数…]]正如@Zoodor在下面所说的,这些参数应该如下描述:
构建作业:'jenkins test project build',参数:[字符串(名称:'param1',值:“some value”),(名称:'param2',值:“some value”)]