Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-43720

NodeLabel parameters are null objects in pipeline script params

XMLWordPrintable

      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.

       

            Unassigned Unassigned
            snellingen Matias Snellingen
            Votes:
            13 Vote for this issue
            Watchers:
            15 Start watching this issue

              Created:
              Updated: