Issue
In scripted Pipeline, if you allocate a node, then use the dir step to change directory, then allocate a new node on the same agent, the directory your build context will be in is incorrect.
If you have only one agent with the label docker, and it has at least two executor slots, you can reproduce this bug by running the following Pipeline:
node('docker') { stage('test') { sh 'pwd' dir('repo') { sh 'pwd' node('docker') { sh 'pwd' } } } } ---
Running this Pipeline will reproduce the issue during the third call to pwd. That call returns /docker/workspace/test/repo when it should be /docker/workspace/test@2:
Started by user admin [Pipeline] Start of Pipeline [Pipeline] node Running on docker in /docker/workspace/test [Pipeline] { [Pipeline] stage [Pipeline] { (test) [Pipeline] sh + pwd docker/workspace/test [Pipeline] dir Running in /docker/workspace/test/repo [Pipeline] { [Pipeline] sh + pwd /docker/workspace/test/repo [Pipeline] node Running on docker in /docker/workspace/test@2 [Pipeline] { [Pipeline] sh + pwd /docker/workspace/test/repo [Pipeline] } [Pipeline] // node [Pipeline] } [Pipeline] // dir [Pipeline] } [Pipeline] // stage [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline Finished: SUCCESS ---
Resolution
This issue was tracked by JENKINS-70528 and BEE-30693.
The fix was in: Pipeline: Basic Steps Version 1010.vf7a_b_98e847c1 Pipeline: Nodes and Processes Version 1234.v019404b_3832a
This fix is available in the CloudBees CI 2.387.1.2 release, tracked by BEE-30693 in the CloudBees CI release notes.
Tested product/plugin versions
CloudBees Jenkins Platform controller 2.346.1.4 CloudBees CI on modern cloud platforms - Managed controller 2.375.2.3 workflow-durable-task-step:1217.v38306d8fa_b_5c 'Pipeline: Nodes and Processes'