我在我的jenkins管道中构建了一步:
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
不存在。哪种变体,你可以咨询吗?请帮帮我
2条答案
按热度按时间hts6caw31#
我可能会建议将${WORKSPACE}设置为主机上具有文件夹的卷,并使用jenkins用户uid为jenkins在主机文件夹上设置适当的权限。host上的uid user应该等于docker容器中的uid。
wko9yo5t2#
我用的是下一个组装机
此外,我一直在考虑通过插件将Docker作为一个独立的阶段,比如
但是我不知道如何在这种情况下定义一个变量,更不知道如何在命令中替换它。至少在写这个答案的时候)