我已经构建了一个 Docker 镜像并上传到内部注册表。
在 Jenkins 上,我拉取映像并使用 root
用户 (-u root
) 运行容器。我还从 ${workspace}
在容器内,我在安装的共享文件夹内运行 pytest。这会生成临时 __pycache__
文件夹以及 pytest 的报告。
但是这些临时文件夹和报告是由 root
用户生成的。
因此,由于对临时文件夹和报告文件的权限不足,Jenkins 无法对工作区运行清理。
我试图在图像本身内创建一个 (jenkins) 用户,但是当 jenkins 用户作为参数 (-u jenkinsuser
) 传递时,jenkins 无法运行容器
我还尝试在测试后 chown
文件夹,以便我可以将特定用户和组设置到文件夹,但如果在运行期间测试失败,则永远不会运行。
期待专家就如何规避生成文件夹的权限问题提供指导。
这里是 jenkins 内部脚本代码的粗略代码
docker.withRegistry("<server>", "<svc_id>") {
docker.image('<image_name>').inside('-u root --rm -e <proxy> -e <proxy> --name <mount_name> --mount source=${workspace},target=/app,type=bind') { c ->
sh 'echo "Inside container" '
}
}