How to create dynamic checkbox parameter in Jenkins pipeline?

I found out how to create input parameters dynamically from this SO answer

 agent any stages { stage("Release scope") { steps { script { // This list is going to come from a file, and is going to be big. // for example purpose, I am creating a file with 3 items in it. sh "echo \"first\nsecond\nthird\" > ${WORKSPACE}/list" // Load the list into a variable env.LIST = readFile (file: "${WORKSPACE}/list") // Show the select input env.RELEASE_SCOPE = input message: 'User input required', ok: 'Release!', parameters: [choice(name: 'CHOOSE_RELEASE', choices: env.LIST, description: 'What are the choices?')] } echo "Release scope selected: ${env.RELEASE_SCOPE}" } } } } 

This allows us to choose only one as it's a choice parameter, how to use the same list to create checkbox parameter, so the user can choose more than one as needed? e.g: if the user chooses first and third, then the last echo should print Release scope selected: first,third or the following is fine too, so I can iterate over and find the true ones Release scope selected: {first: true, second: false, third: true}

2 Answers

I could use extendedChoice as below

 agent any stages { stage("Release scope") { steps { script { // This list is going to come from a file, and is going to be big. // for example purpose, I am creating a file with 3 items in it. sh "echo \"first\nsecond\nthird\" > ${WORKSPACE}/list" // Load the list into a variable env.LIST = readFile("${WORKSPACE}/list").replaceAll(~/\n/, ",") env.RELEASE_SCOPE = input message: 'User input required', ok: 'Release!', parameters: [extendedChoice( name: 'ArchitecturesCh', defaultValue: "${env.BUILD_ARCHS}", multiSelectDelimiter: ',', type: 'PT_CHECKBOX', value: env.LIST )] // Show the select input env.RELEASE_SCOPE = input message: 'User input required', ok: 'Release!', parameters: [choice(name: 'CHOOSE_RELEASE', choices: env.LIST, description: 'What are the choices?')] } echo "Release scope selected: ${env.RELEASE_SCOPE}" } } } } 

There is a booleanParam:

parameters { booleanParam( name: 'MY_BOOLEAN', defaultValue: true, description: 'My boolean' ) } // parameters 

It's oddly named, as all the other param types don't have the "Param" name in them. Eg: string, choice, etc.

1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

You Might Also Like