I needed to add parameters to a Jenkins Scripted Pipeline recently, but I ran into issues with the documented syntax for parameters.
The docs on parameters specify that the following block is the correct syntax:
properties([parameters([string(defaultValue: 'Hello', description: 'How should I greet the world?', name: 'Greeting')])])
node {
echo "${params.Greeting} World!"
}
This looks very close to the Declarative Pipeline syntax, but results in an IllegalArgumentException
:
java.lang.IllegalArgumentException: Expected named arguments but got [@string(name=Greeting,defaultValue=Hello,description=How should I greet the world?)]
This is the proper syntax for the same parameters:
properties([
[$class: 'ParametersDefinitionProperty', parameterDefinitions: [
[$class: 'StringParameterDefinition',
name: 'Greeting',
defaultValue: 'Hello',
description: 'How should I greet the world?']
]]
])
node {
echo "${params.Greeting} World!"
}
Boolean parameters should be able to use BooleanParameterDefinition
instead of StringParameterDefinition
.