2

I've a frustrating issue when "npm install" is executed inside a Jenkins Groovy pipeline using the NodeJS plugin, the process hangs with the following error -

npm install --ddd ng-cli
npm info it worked if it ends with ok
npm verb cli [ '/var/jenkins_home/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/nodejs893-v2/bin/node',
npm verb cli   '/var/jenkins_home/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/nodejs893-v2/bin/npm',
npm verb cli   'install',
npm verb cli   '--ddd',
npm verb cli   'ng-cli' ]
npm info using npm@5.5.1
npm info using node@v8.9.3
npm verb npm-session e522ad0a36f1c038
npm sill install loadCurrentTree
npm sill install readLocalPackageData
npm http fetch GET 503 https://registry.npmjs.org/ng-cli 70252ms attempt #3
npm sill fetchPackageMetaData error for ng-cli@latest 503 Service Unavailable: ng-cli@latest
npm verb stack Error: 503 Service Unavailable: ng-cli@latest

When the command is executed directly on the EC2, the package installs without issue as the Jenkins user.

Also when the command is executed inside the Jenkins Docker, the package installs without issue as the Jenkins user using the same Node installation.

The Docker instance is not limited by CPU or RAM.

The setup is Jenkins v2.138.1 running inside a Docker container, which in turn is hosted on an EC2 v2018.03. Jenkins home is mounted as an EFS volume. The JVM is running on Java v1.8.0_181. NPM is v5.1.1.

Any pointers would be much appreciated.

Reply to first suggestion

Yes there is direct internet connectivity, without any proxy. If a single package is installed such as

npm install ng-cli

The npm install works without issue.

Community
  • 1
  • 1
Theo Sweeny
  • 1,033
  • 14
  • 26

1 Answers1

1

The issue consisted of two parts -

First off - the EFS mount point directory (/var/jenkins_home) required permissions of 777, it doesn't need to be a recursive permission.

The new EFS disk had content migrated from the old Jenkins EFS and this was also contributing to this issue. The fix was to not transfer any content from the old EFS to the new EFS via the backup.tar.gz feature. The new Jenkins is working as expected with npm install.

Dockerfile pulled from - https://hub.docker.com/r/jenkins/jenkins/

Theo Sweeny
  • 1,033
  • 14
  • 26
  • that install might use another mirror of the NPM registry. you could compare with `npm config get registry`, if that indeed made the difference. – Martin Zeitler Sep 21 '18 at 09:02
  • The NPM registry was alway preset to the default registry of https://registry.npmjs.org - so not the issue. – Theo Sweeny Sep 21 '18 at 10:14