代码之家  ›  专栏  ›  技术社区  ›  user6348718

如何通过choice参数调用jenkins管道中的作业

  •  0
  • user6348718  · 技术社区  · 6 年前

    我怎么能通过 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

    我实际上想把choice参数作为 build parameter 比如说“$choiceParam” value 这样我就可以更新jenkins作业配置,而不是总是更新管道脚本中的值

    有人能帮我吗

    谢谢

    1 回复  |  直到 6 年前
        1
  •  4
  •   metalisticpain    6 年前

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

    在本例中,您将传入所需的“String”选项。不是一个选择列表。i、 e.“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)