繁体   English   中英

Jenkins 构建问题 - npm 错误! 您的缓存文件夹包含 root 拥有的文件

[英]Jenkins build issue - npm ERR! Your cache folder contains root-owned files

我正在尝试在我的 Jenkins 管道上构建一个小型节点应用程序,该管道在虚拟机中运行。 越过这个错误:

    + npm install
npm ERR! code EACCES
npm ERR! syscall mkdir
npm ERR! path /.npm
npm ERR! errno EACCES
npm ERR! 
npm ERR! Your cache folder contains root-owned files, due to a bug in
npm ERR! previous versions of npm which has since been addressed.
npm ERR! 
npm ERR! To permanently fix this problem, please run:
npm ERR!   sudo chown -R 111:120 "/.npm"

运行sudo chown -R 111:120 "/.npm"帮助,因为它说:

chown: 无法访问 '/.npm': 没有那个文件或目录

而且,根据我的理解,当问题实际上是从容器的角度来看时,它在本地上下文中运行。 我也尝试在我的 Docker 和 Jenkinsfile 上添加上面的命令,但无济于事。 以下是我的公共回购:

节点应用部署在 github

npm install --cache=".YourCustomCacheDirectoryName"

工作得很好,原因是您的 docker 用户不允许写入 / (根目录)它不是目录已经存在于 /.npm 它,你的脚本试图在 / 创建一个目录您的用户可以访问,您可以输入

agent {
    docker {
      image 'node:latest'
      args '-u root:root'
    }
}

或者只是告诉 npm 使用您的自定义缓存目录

我有同样的问题并通过将 npm 缓存目录设置为 Dockerfile 中的 ENV 变量来修复它。

将此添加到 Dockerfile:

ENV npm_config_cache /home/node/app/.npm

据我所知,只需更新 npm 版本并删除整个项目就可以了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM