【问题标题】:Dockerised Jenkins Hangs NPM InstallDockerised Jenkins 挂起 NPM 安装
【发布时间】:2019-02-21 13:05:51
【问题描述】:

当使用 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 用户使用相同的节点安装。

Docker 实例不受 CPU 或 RAM 限制。

设置是在 Docker 容器内运行的 Jenkins v2.138.1,而后者又托管在 EC2 v2018.03 上。 Jenkins home 作为 EFS 卷挂载。 JVM 在 Java v1.8.0_181 上运行。 NPM 是 v5.1.1。

任何指针将不胜感激。

回复第一个建议

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

npm install ng-cli

npm install 没有问题。

【问题讨论】:

标签: docker jenkins npm jenkins-plugins


【解决方案1】:

问题由两部分组成 -

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

新 EFS 磁盘的内容从旧 Jenkins EFS 迁移而来,这也是造成此问题的原因。解决方法是不通过 backup.tar.gz 功能将任何内容从旧 EFS 传输到新 EFS。新的 Jenkins 通过 npm install 可以正常工作。

Dockerfile 来自 - https://hub.docker.com/r/jenkins/jenkins/

【讨论】:

  • 该安装可能使用 NPM 注册表的另一个镜像。您可以与 npm config get registry 进行比较,如果这确实有所作为。
  • NPM 注册表总是预设为默认注册表 registry.npmjs.org - 所以不是问题。
猜你喜欢
  • 2013-05-28
  • 1970-01-01
  • 2018-02-28
  • 2017-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-13
  • 2015-05-03
相关资源
最近更新 更多