Issue
In a pipeline it might be sometime useful to insert some human interactions to choose an option or fill some parameters.
Without the Pipeline plugin Jenkins users often used the Promoted Builds Plugin to implement such behaviour.
How do we reproduce this behaviour with the pipeline plugin ?
Environment
Environment
- CloudBees CI (CloudBees Core) on modern cloud platforms - Managed controller
- CloudBees CI (CloudBees Core) on traditional platforms - Client controller
- CloudBees Jenkins Enterprise - Managed controller
- CloudBees Jenkins Platform - Client controller
- CloudBees Jenkins Distribution
- Jenkins LTS
- Pipeline plugin
Resolution
You have to use the input step to achieve it. It will give you something like this :
stage 'promotion'
def userInput = input(
id: 'userInput', message: 'Let\'s promote?', parameters: [
[$class: 'TextParameterDefinition', defaultValue: 'uat', description: 'Environment', name: 'env'],
[$class: 'TextParameterDefinition', defaultValue: 'uat1', description: 'Target', name: 'target']
])
echo ("Env: "+userInput['env'])
echo ("Target: "+userInput['target'])
and the result will be
Running: promotion
Entering stage promotion
Proceeding
Running: Input
Input requested
Running: Print Message
Env: uat
Running: Print Message
Target: uat1
Running: End of Workflow
Finished: SUCCESS
**If you have only one parameter, **its value will be directly returned instead of a Map
stage 'promotion'
def userInput = input(
id: 'userInput', message: 'Let\'s promote?', parameters: [
[$class: 'TextParameterDefinition', defaultValue: 'uat', description: 'Environment', name: 'env']
])
echo ("Env: "+userInput)
will give you this result :
Running: promotion
Entering stage promotion
Proceeding
Running: Input
Input requested
Running: Print Message
Env: uat
Running: End of Workflow
Finished: SUCCESS
Tip: It is best to avoid inserting input steps inside a node{} block, so as not occupy a node/agent while waiting for user input.
14 Comments