jenkins - 如何传递选择参数以调用 Jenkins 管道内的作业

标签 jenkins groovy jenkins-pipeline jenkins-groovy

当在 jenkins 管道的 stage 中调用时,如何为下游作业传递 choice parameters

我尝试了以下解决方案,但均无效:

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

失败并出现 java.lang.UnsupportedOperationException:类 hudson.model.ParameterValue 的已知实现没有使用符号“选择”

也尝试了这些:

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

java.lang.UnsupportedOperationException 失败:没有已知的类 hudson.model.ParameterValue 的实现被命名为 ChoiceParameterValue

我实际上想将选择参数作为 构建参数 传递,例如 value 的“$choiceParam”,这样我就可以只更新 jenkins 作业配置,而不是总是更新管道脚本中的值

谁能帮我解决这个问题

谢谢

最佳答案

当您通过构建步骤构建作业时,您是在启动它,因此您需要“选择”一个值。

在这种情况下,您将传递所需的“字符串”选项。不是选择列表。即“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)

关于jenkins - 如何传递选择参数以调用 Jenkins 管道内的作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53732217/

相关文章:

Jenkins 。在选项阶段使用共享库

docker - 我需要隐藏 Jenkins 日志中的参数

jenkins - 在 Jenkins 中断开节点的编程方式是什么?

java - 从 linux 上的 groovy 脚本运行 java 可执行文件

grails - 不使用 Controller 逻辑的Grails urlMappings操作和 Controller 行为

jenkins - Jenkins 管道脚本中的 Try-catch block

java - Jenkins Cobertura 构建 - NoClassDefFoundError

jenkins - 一起使用 withEnv 和 withCredentials

docker 中的 Jenkins 可以访问主机 docker

groovy - 如何在 Eclipse 中运行 Spock 测试