Jenkins Choice parameter Passing to a pipeline Job

前端 未结 5 473
粉色の甜心
粉色の甜心 2020-12-30 03:00

Currently I have a pipeline job which has different paramters where one of this parameters is a Choice parameter. Here is the config.xml output of that job parameter:

<
相关标签:
5条回答
  • 2020-12-30 03:29

    Based on the tip of c3st7n I have tested the following:

    build job: "NameOfTheJob"", parameters:
      [
        [$class: 'StringParameterValue', name: 'BRANCH', value: "${BRANCH}"],
        [$class: 'StringParameterValue', name: 'WHERE', value: "F3"],
    
      ]
    

    This works.

    0 讨论(0)
  • 2020-12-30 03:31

    As documented at https://www.jenkins.io/doc/book/pipeline/syntax/#parameters in September 2020, the documented syntax to use a choice parameter in a pipeline is:

    pipeline {
        agent any
        parameters {
            choice(
                name: 'CHOICE',
                choices: ['one', 'two', 'three'],
                description: ''
            )
        }
        stages {
            stage('Example') {
                steps {
                    echo "Choice: ${params.CHOICE}"
                    sh "echo Choice: ${params.CHOICE}"
                    sh 'echo Choice: $CHOICE'
                }
            }
        }
    }
    

    In testing, the choice defaults to the first parameter in the list, I have not looked into if this has potential to be otherwise.

    All three versions of the task perform the same. Note the specific quotes used.

    0 讨论(0)
  • 2020-12-30 03:35

    In script mode you can also do it like this, at the moment it is bugged and it expects the choice parameters as a newline delimited string instead of an array. When using the Pipeline and JenkinsFile in script mode you can do a quick fix like follows:

    properties(
        [parameters([choice(choices: ["A", "B", "C"].join("\n"),
        description: 'Some choice parameter', 
        name: 'SOME_CHOICE')])])
    

    You can put this before your first node statement to add parameters to your builds.

    Update: example multi select with extended choice parameter plugin in Jenkins pipeline file:

    com.cwctravel.hudson.plugins.extended_choice_parameter.ExtendedChoiceParameterDefinition extendedChoiceParameterDefinition = new com.cwctravel.hudson.plugins.extended_choice_parameter.ExtendedChoiceParameterDefinition(
        "OPTION_NAME", // name
        "PT_CHECKBOX", // type
        "option1,option2,option3", // values
        null, // projectName
        null, // propertyFile
        null, // groovyScript
        null, // groovyScriptFile
        null, // bindings
        null, // groovyClasspath
        null, // propertyKey
        "option1,option2", // defaultValue
        null, // defaultPropertyFile
        null, // defaultGroovyScript
        null, // defaultGroovyScriptFile
        null, // defaultBindings
        null, // defaultGroovyClasspath
        null, // defaultPropertyKey
        null, // descriptionPropertyValue
        null, // descriptionPropertyFile
        null, // descriptionGroovyScript
        null, // descriptionGroovyScriptFile
        null, // descriptionBindings
        null, // descriptionGroovyClasspath
        null, // descriptionPropertyKey
        null, // javascriptFile
        null, // javascript
        false, // saveJSONParameterToFile
        false, // quoteValue
        10, // visible item count
        "Select your options", // description
        "," //multiSelectDelimiter
    )
    
    normalChoiceOptions = ["option1","option2"]
    
    properties([
            parameters([
                    choice(choices: normalChoiceOptions.join("\n"), description: 'Single select option', name: 'SOME_OPTION'),                
                    extendedChoiceParameterDefinition
            ])
    ])
    
    0 讨论(0)
  • 2020-12-30 03:37

    I have seen a working example that uses the below syntax:

    build job:'NameOfTheJob', parameters: [
          string(name: 'FirstOption', value: "test"),
          string(name: 'AnotherOption', value: "test12")
    ]
    

    Basically, don't treat the choice parameters in a special manner, just treat them as regular string parameters.

    0 讨论(0)
  • 2020-12-30 03:44

    Use ExtendedChoiceParameterValue instead of ChoiceParameterValue

    e.g.

    [$class: 'ExtendedChoiceParameterValue', name: 'param_name', value: 'param_value']
    
    0 讨论(0)
提交回复
热议问题