我在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
。您可以建议哪种变体?请帮忙。
答案 0 :(得分:0)
我可能建议将$ {WORKSPACE}设置为在主机上具有文件夹的卷,并使用jenkins用户uid在主机文件夹上为jenkins设置适当的权限。主机上的uid用户应等于docker容器中的uid。