如何在Jenkins管道中传递选择参数来调用作业

时间:2018-12-11 20:55:27

标签: jenkins groovy jenkins-pipeline jenkins-groovy

在jenkins管道中的choice parameters内调用时,如何传递stage进行下游工作?

我尝试了以下解决方案,但没有用:

stage('build job') {
    steps{
        script{
              build job: 'test',
                   parameters: [
                                choice(choices: "option1\noption2\noption3\n", description: '', name: 'choiceParam')
                                ] 
              }
     }
}

失败java.lang.UnsupportedOperationException: no known implementation of class hudson.model.ParameterValue is using symbol ‘choice’

也尝试过这些:

 parameters:
   [
     [$class: 'ChoiceParameterValue', name: 'choiceParam', value: "1\n\2\n3\n"],
   ]

失败java.lang.UnsupportedOperationException: no known implementation of class hudson.model.ParameterValue is named ChoiceParameterValue

我实际上想将选择参数作为build parameter的{​​{1}}传递给“ {choiceParam”,这样我就可以更新jenkins作业配置,而不必总是更新管道脚本中的值< / p>

有人可以帮我吗

谢谢

1 个答案:

答案 0 :(得分:2)

在通过“构建”步骤构建作业时,您将开始该作业,因此需要“选择”一个值。

在这种情况下,您将传递所需的“字符串”选择。没有选择列表。即“ 1”

我们创建参数列表,然后将其传递。因此:我们当前的工作具有以下输入参数:

choice(name: 'ENV', choices: product, description: 'Env'),
choice(name: 'ENV_NO', choices: envParams(product), description: 'Env No'),

我们通过设置它们将它们传递给下游:

List<ParameterValue> newParams = [
    new StringParameterValue('ENV', params.ENV),
    new StringParameterValue('ENV_NO', params.ENV_NO),
]
build(job: "job", parameters: newParams, propagate: false)