-
Notifications
You must be signed in to change notification settings - Fork 60
Description
Accessing the parameter with param will give you a null object, but accessing it through env and global will give you the string of one node.
Example:
properties ([
parameters([
[
$class: 'BooleanParameterDefinition',
defaultValue: false,
description: 'This will do a clean and build of the project.',
name: 'Rebuild'
],
[
$class: 'NodeParameterDefinition',
allowedSlaves: ['ALL (no restriction)'],
defaultSlaves: ['master'],
description: 'What nodes to run the build on.',
name: 'NODE_PARAM',
nodeEligibility: [$class: 'AllNodeEligibility'],
triggerIfResult: 'allowMultiSelectionForConcurrentBuilds'
]
])
])
echo "NODE_PARAM: " + NODE_PARAM.getClass().toString()
echo "env.NODE_PARAM: " + env.NODE_PARAM.getClass().toString()
echo "params.NODE_PARAM: " + params.NODE_PARAM.getClass().toString()
Will give you this output:
[Pipeline] echo NODE_PARAM: class java.lang.String [Pipeline] echo env.NODE_PARAM: class java.lang.String [Pipeline] echo params.NODE_PARAM: class org.codehaus.groovy.runtime.NullObject
As you can see, only params.NODE_PARAM is null.
The problem is that I can not use env.NODE_PARAM or NODE_PARAM to get multiple selection of nodes, as those are only a string representation of a single node.
Originally reported by
snellingen, imported from: NodeLabel parameters are null objects in pipeline script params
- status: Open
- priority: Minor
- component(s): nodelabelparameter-plugin
- label(s): jenkins, pipeline, plugin
- resolution: Unresolved
- votes: 13
- watchers: 15
- imported: 20251210-235911
Raw content of original issue
Accessing the parameter with param will give you a null object, but accessing it through env and global will give you the string of one node.
Example:
properties ([ parameters([ [ $class: 'BooleanParameterDefinition', defaultValue: false, description: 'This will do a clean and build of the project.', name: 'Rebuild' ], [ $class: 'NodeParameterDefinition', allowedSlaves: ['ALL (no restriction)'], defaultSlaves: ['master'], description: 'What nodes to run the build on.', name: 'NODE_PARAM', nodeEligibility: [$class: 'AllNodeEligibility'], triggerIfResult: 'allowMultiSelectionForConcurrentBuilds' ] ]) ]) echo "NODE_PARAM: " + NODE_PARAM.getClass().toString() echo "env.NODE_PARAM: " + env.NODE_PARAM.getClass().toString() echo "params.NODE_PARAM: " + params.NODE_PARAM.getClass().toString()Will give you this output:
[Pipeline] echo NODE_PARAM: class java.lang.String [Pipeline] echo env.NODE_PARAM: class java.lang.String [Pipeline] echo params.NODE_PARAM: class org.codehaus.groovy.runtime.NullObjectAs you can see, only params.NODE_PARAM is null.
The problem is that I can not use env.NODE_PARAM or NODE_PARAM to get multiple selection of nodes, as those are only a string representation of a single node.
environment
Jenkins ver. 2.15 on Windows,<br/>
NodeLabel 1.7.2,<br/>
Pipeline: Groovy 2.29