"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"
}