-
Bug
-
Resolution: Fixed
-
Major
-
None
-
Jenkins 2.162
NodeJS plugin 1.2.7
Latest pipeline plugins as of 04/02/2019
Jenkins Tool config:
NodeJs version 8.15.0 - Install automatically - Global packages = "yarn"
Hey,
We have a Pipeline job that runs steps in parallel across three nodes - one Ubuntu, one Mac, one Windows. Some time recently (we're not exactly sure when), it started downloading the wrong node package to the machines, e.g. downloading "node-v8.15.0-darwin-x64.tar.gz" to the Windows machine.
Even when it does (randomly?) select the correct package, we're unable to build, since the windows logic in NodeJSInstaller doesn't fire, so it uses an incorrect command.
I've cut everything down to a minimal Jenkinsfile that reproduces the issue for us. See screenshots for the console output.
nodeLinux = 'ubuntu64-normal-amazon-1' nodeWin = 'windows-office-devops' nodeMac = 'devops-osx-slave' nodejsInstallation = 'node8' pipeline { agent { label 'master' } stages { stage('Test') { parallel { stage('Linux') { agent { label nodeLinux } steps { nodejs(nodeJSInstallationName: nodejsInstallation) { sh 'yarn install' } } } stage('Win') { agent { label nodeWin } steps { nodejs(nodeJSInstallationName: nodejsInstallation) { bat 'yarn install' } } } stage('MacOS') { agent { label nodeMac } steps { nodejs(nodeJSInstallationName: nodejsInstallation) { sh 'yarn install' } } } } } } }
It works fine if not run in parallel. I've also tried the OS detection logic in the Jenkins console and it works fine there, too:
import jenkins.plugins.nodejs.tools.*; println('Linux:') println(ToolsUtils.getPlatform(Jenkins.instance.getNode('ubuntu64-normal-amazon-1'))); println('Mac:') println(ToolsUtils.getPlatform(Jenkins.instance.getNode('devops-osx-slave'))); println('Windows:') println(ToolsUtils.getPlatform(Jenkins.instance.getNode('windows-office-devops'))); --- Linux: LINUX Mac: OSX Windows: WINDOWS