[英]Image permission in jenkins docker agent
我在正常的 AWS ec2 实例上使用正常的 jenkins 安装(不是 DOCKER 图像),docker 引擎与 jenkins 一起安装。
我有一个像这样的简单 jenkins 管道:
pipeline {
agent none
stages {
stage('Example Build') {
agent { docker {
image 'cypress/base:latest'
args '--privileged --env CYPRESS_CACHE_FOLDER=~/.cache'
} }
steps {
sh 'ls'
sh 'node --version'
sh 'yarn install'
sh 'make e2e-test'
}
}
}
}
这将使管道在安装 cypress 时在纱线安装步骤中失败,尽管它的所有依赖项都已从 cypress 映像中得到满足。
来自 JENKINS 的错误日志
error /var/lib/jenkins/workspace/Devops-Capstone-Project_master/node_modules/cypress: Command failed.
Exit code: 1
Command: node index.js --exec install
Arguments:
Directory: /var/lib/jenkins/workspace/Devops-Capstone-Project_master/node_modules/cypress
Output:
Cypress cannot write to the cache directory due to file permissions
See discussion and possible solutions at
https://github.com/cypress-io/cypress/issues/1281
----------
Failed to access /.cache:
EACCES: permission denied, mkdir '/.cache'
经过一些调查,我发现虽然我提供了环境变量“CYPRESS_CACHE_FOLDER=~/.cache”来覆盖根目录中的默认位置,并且还提供了“--privileged” 。 它失败是因为出于某种原因 jenkins 和 docker 强制从 jenkins 主机映射他们的参数和用户。
我还尝试提供“-u 1000:1000”来覆盖用户映射,但它没有用。
可能有什么问题? 以及关于此问题的任何建议或解决方法?
谢谢,,
我通过创建一个 docker 文件来构建图像并将 jenkins 用户 ID 和组传递给它作为构建 arguments 找到了解决方法,如此处在此线程中所述。
但这不能保证在多个节点(主->从)jenkins 安装上工作,因为 jenkins 用户 ID 和组可能不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.