作为构建管道的一部分,我有一个包含构建工具的容器,该容器用于多个项目。我的项目之一包含构建步骤,以构建和发布容器,该步骤是从build-tools容器内完成的。我的启用了docker的jenkins-slaves配置为具有jenkinsgroup中的用户docker。我使用-v挂载docker二进制文件和scoket。可以通过以下任一方式实现/复制:
第一种策略的问题在于,在多个构建计算机上,用户名和组ID是不同的。我可以通过将所有构建机器的UID和GID更改为相同的值来解决此问题,但是docker是否不是要在没有对环境/上下文有很多依赖性的情况下独立运行的?这感觉不适合我。第二种策略在命令行上可以很好地工作,但是,似乎没有办法将UID和GID传递给Jenkinsfile中的agent命令。该args参数不支持脚本或变量,如$(id -u)。
我本来不是第一个遇到此问题的人,但是,我自己,搜索机器和堆栈溢出都无法找到解决方案。我应该选择“准备好的”构建奴隶,还是有办法使第二种策略起作用?
。
-edit-我了解以root身份运行容器并在启动后进行切换的选项(例如,使用入口点)。但是,这将需要我的Jenkins奴隶以root身份连接,这对我来说是不可接受的。另一个找到的替代方法是所有资源的chmod777,这完全不保证不以root用户身份运行Jenkins从站的安全性。我更愿意对容器使用-u选项,但是在从Jenkinsfile中启动docker agent(docker run命令)之前,我找不到在jenkins从属服务器上确定UID和GID 的方法。
我搜索了互联网和perforce帮助页面,但找不到我的问题的解决方案.
在脚本中,在命令行上,我想更改我的工作区视图.例如:
// depot/some/branch/myfolder/mysubfolder/.../home/myuser/perforce/branch/myfolder/myworkspace/... to // depot/some/branch/.../home/myuser/perforce /科/...
我无法弄清楚要使用的命令.你能帮我吗?