繁体   English   中英

图片权限在 jenkins docker 代理

[英]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.

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