13

How can I use the Jenkins Dynamic Plugin in a Jenkinsfile?

What I am looking for is a Jenkinsfile snippet that:

  • Enables the Build with Parameters option in the Jenkins job
  • When selected, a script that populates a list that can be used Dynamic Choice Parameters is populated and the user will see a drop down list.

When trying:

  1. Pipeline syntax in the Jenkins editor
  2. Selecting properties: Set job properties as Sample step
  3. Selecting This project is parameterized
  4. Using Dynamic Choice Parameter
  5. Enter values for Name, Choice Script, Remote Script etc
  6. Generate Pipeline Script

I get the following template:

properties([ parameters([ <object of type com.seitenbau.jenkins.plugins.dynamicparameter.ChoiceParameterDefinition> ]), pipelineTriggers([]) ]) 

i.e. the generated pipeline script does not contain the data that I have entered in step 5. above. How can I modify parameters so that parameter name, choices, etc will be visible to the user?


Jenkins version: 2.19.3 Dynamic Parameter Plugin version: 0.2.0

1 Answer 1

11

there is no need anymore for the Jenkins Dynamic Plugin anymore. Just use the normal choice or string parameter and have the value(s) updated by groovy code.

#!/bin/groovy def envs = loadEnvs(); properties([ parameters([ choice(choices: envs, description: 'Please select an environment', name: 'Env') ]) ]) node { try { stage('Preparation'){ ... 

If you use the choice parameter be aware the you must provide a string where the values are separated by a new line.

For example:

"a\nb\nc" 

If you really need to plugin, then vote on this issue JENKINS-42149.

Sign up to request clarification or add additional context in comments.

4 Comments

In what version of Jenkins? I'm running 2.3 and get the error "No such DSL method 'parameters' found among steps"
It works, but it creates new parameter and persists values in build parameters, if actual values (for example list of maven versions) changed -parameters values not updated, seems loadEnvs() not executed every time or smth like this
This is a scripted pipeline. Does it work in declarative pipeline? If so, how? What's the syntax?
The problem with this is changes to build properties only affect future builds -- changing the parameters on the current build doesn't help because the properties() function runs after the user has already provided the build parameters for that build

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.