在Docker容器中构建Jenkins-job后如何从ROOT所有权更改为jenkins

时间:2019-08-03 20:07:14

标签: docker jenkins jenkins-pipeline dockerfile

我在jenkins-pipeline中建立了步骤:

        stage('Build') {
        agent {
            docker {
                image 'mymvnbasedimage:latest'
                args '-u root:root'
                reuseNode true
            }
        }
        steps {
                sh "ant"
            }
        }

一切正常,一切正常。但是,workspace将包含root拥有的目录和文件,用户jenkins在清理workpace的下一次运行中无法删除。

ls -lt ~/workspace/myjenkinsjob/dist/
total 185764
-rw-r--r-- 1 root root 190218240 Aug  3 19:49 buildresult-21.tar

当然我可以添加:

        stage('Chown to user Jenkins'){
            steps {
            echo 'Chown to user Jenkins'
            sh "sudo chown -R jenkins:jenkins ${WORKSPACE}"
            }
        }

但这不是可以的,因为我必须添加/etc/sudoers权限才能为用户chown创建Jenkins。另外,我无法进行chown的内部容器操作,因为那里没有用户jenkins。您可以建议哪种变体?请帮忙。

1 个答案:

答案 0 :(得分:0)

我可能建议将$ {WORKSPACE}设置为在主机上具有文件夹的卷,并使用jenkins用户uid在主机文件夹上为jenkins设置适当的权限。主机上的uid用户应等于docker容器中的uid。