"EACCES: permission denied" 当 运行 npm install by jenkins 并使用 docker agent
"EACCES: permission denied" when running npm install by jenkins and using docker agent
我创建了一个简单的 nodejs 项目,其中包含一个 Jenkins 文件,内容如下:
pipeline {
agent { docker { image 'node:12-alpine' } }
stages {
stage('build') {
steps {
sh 'npm install'
}
}
stage('test') {
steps {
sh 'npm run test'
}
}
}
}
jenkins 服务由其自己名为“jenkins”的用户 运行ning,由于之前的权限问题(尝试连接时权限被拒绝),我已将该用户添加到 docker 用户组Docker 守护进程)并且我已经在 jenkins 中安装了 docker 插件。
但是当我 运行 构建作业时,出现以下错误并且构建失败
EACCES: permission denied, mkdir '/.npm'
如果我使用
agent any
在 Jenkinsfile 中,我没有收到提到的错误。但我想使用 docker 代理。
为什么会这样?我错过了什么吗?
用户无法在默认缓存目录中写入,您可以在管道的开头使用此环境变量覆盖它:
environment {
NPM_CONFIG_CACHE = "${WORKSPACE}/.npm"
}
我创建了一个简单的 nodejs 项目,其中包含一个 Jenkins 文件,内容如下:
pipeline {
agent { docker { image 'node:12-alpine' } }
stages {
stage('build') {
steps {
sh 'npm install'
}
}
stage('test') {
steps {
sh 'npm run test'
}
}
}
}
jenkins 服务由其自己名为“jenkins”的用户 运行ning,由于之前的权限问题(尝试连接时权限被拒绝),我已将该用户添加到 docker 用户组Docker 守护进程)并且我已经在 jenkins 中安装了 docker 插件。
但是当我 运行 构建作业时,出现以下错误并且构建失败
EACCES: permission denied, mkdir '/.npm'
如果我使用
agent any
在 Jenkinsfile 中,我没有收到提到的错误。但我想使用 docker 代理。
为什么会这样?我错过了什么吗?
用户无法在默认缓存目录中写入,您可以在管道的开头使用此环境变量覆盖它:
environment {
NPM_CONFIG_CACHE = "${WORKSPACE}/.npm"
}