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:
<hudson.model.ChoiceParameterDefinition> <choices class="java.util.Arrays$ArrayList"> <a class="string-array"> <string>f1</string> <string>f2</string> <string>f3</string> <string>f4</string> </a> </choices> <name>WHERE</name> <description>Something</description> </hudson.model.ChoiceParameterDefinition>
Now I can call this job from a pipeline via by passing a string parameter:
build job: "NameOfTheJob"", parameters: [ [$class: 'StringParameterValue', name: 'BRANCH', value: "${BRANCH}"], ]
But I couldn't get a way to define the parameters for a choice parameter:
I have tried the following:
build job: "NameOfTheJob"", parameters: [ [$class: 'StringParameterValue', name: 'BRANCH', value: "${BRANCH}"], [$class: 'ChoiceParameterValue', name: 'WHERE', value: 'F3'], ]
But this failed with the following error:
java.lang.UnsupportedOperationException: no known implementation of class hudson.model.ParameterValue is named ChoiceParameterValue
So the question is: How to define a choice parameters in calling an other pipeline job:
build job: "NameOfTheJob"", parameters: [ [$class: 'StringParameterValue', name: 'BRANCH', value: "${BRANCH}"], [$class: '??????', ????], ]
Does someone has an example of such thing?
Go to Jenkins Home, select New Item, add a name for your Job, for the project type, select Pipeline project and click on Ok. On the configure job page select the This project is parameterized checkbox in the general tab. Now, we will add an Active Choices Parameter which renders our Application Tiers as a Dropdown.
You can use Parameterized Trigger Plugin which will let you pass parameters from one task to another. You need also add this parameter you passed from upstream in downstream.
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.
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 ]) ])
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With