I couldn't find documentation explicitly answering this question, some lightly addressing nodejs on bamboo...but not much farther than that.
If I have three local agents on one bamboo server, and one bamboo build plan. This build plan has one stage, and three jobs. Bamboo is configured to schedule concurrent execution of these jobs amongst the available local agents. Meaning, these three jobs would execute concurrently.
Each of these jobs have a task inside that executes "nvm use" with a different nodejs version. For sake of argument, let's say job1 uses 8.10.0, job2 uses 6.12.0, and job3 uses 4.8.0. Let's also say that agent1 was assigned to job1, agent2 was assigned to job2, and agent3 was assigned to job3.
Two questions:
1) does this create a race condition for nodejs versions, where agent1 is expecting to run an application at v8.10.0 but agent2 set nodejs to v6.12.0 right before agent1's next task? Thereby breaking the version required for the task.
2) Would this build plan affect other unrelated co-existing build plans? If say, the other plan did not mention a node version to use. Or even, does the race condition mentioned apply here as well?
I originally was thinking that agents ran in their own "silo" and that if one changed the nodejs version, it would only be relevant to the current agents scope. Disappearing after the agent finished that job. Thinking about it, I am not so sure.
No one has answered this, so out of civic duty to inform others who are curious:
Yes. If local agents are exclusively used, the nodejs version changes and cannot be guaranteed at task runtime.