Dockerized Jenkins挂起NPM安装

时间:2018-09-17 14:58:38

标签: docker jenkins npm jenkins-plugins

当使用NodeJS插件在Jenkins Groovy管道内执行“ npm install”时,我遇到一个令人沮丧的问题,该进程因以下错误而挂起-

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

直接在EC2上执行命令时,该软件包将以Jenkins用户身份安装而不会出现问题。

此外,当命令在Jenkins Docker内部执行时,该软件包将与Jenkins用户一样使用相同的Node安装进行安装。

Docker实例不受CPU或RAM的限制。

设置为在Docker容器中运行的Jenkins v2.138.1,该容器又托管在EC2 v2018.03上。 Jenkins主页已作为EFS卷安装。 JVM在Java v1.8.0_181上运行。 NPM是v5.1.1。

任何指针将不胜感激。

回复第一个建议

是的,可以直接连接互联网,没有任何代理。如果安装了单个软件包,例如

npm install ng-cli

npm安装没有问题。

1 个答案:

答案 0 :(得分:0)

问题由两部分组成-

首先-EFS挂载点目录(/ var / jenkins_home)所需的权限为777,不需要是递归权限。

新的EFS磁盘具有从旧的Jenkins EFS迁移的内容,这也导致了此问题。解决的办法是不通过backup.tar.gz功能将任何内容从旧EFS传输到新EFS。新的Jenkins通过npm install可以正常工作。

Dockerfile从-https://hub.docker.com/r/jenkins/jenkins/

提取