I have two pipeline jobs: main-pipeline-A and child-pipeline-B, where main-pipeline-A calls another pipeline job: child-pipelineB. Both pipeline jobs have a NODELABEL parameter to specify the label on which the pipeline job should be run. The main pipeline also passes the nodelabel value when calling the child pipeline. Here is the main pipeline code that does this:
build job: 'child-pipeline-B',
[$class: 'NodeParameterValue', name: 'NODELABEL',
labels: [NODELABEL], nodeEligibility: [$class: 'AllNodeEligibility']]
They work as expected: when the the main pipeline is kicked off, it runs on the specified label, passes the specified label to child job and the child runs on the specified label. It also works if I directly kickoff child-pipeline-B or if I do "Rebuild" of the main-pipeline-A job.
It does not work if I do a "Rebuild" of the child-pipeline-B job which was previously run/called by main-pipeline-A job. It stays in the queue forever with a message:
(pending—There are no nodes with the label ‘’)"
even though a valid label was specified.
Also note that if child-pipeline-B was run directly instead of called from main-pipeline-A job, then "Rebuild" works as expected. So this issue only occurs when I try to "Rebuild" child-pipeline-B job which was originally called by main-pipeline-A job.
Attaching two config files for the pipeline job, so it should be easy to reproduce.