在Jenkins管道中,当我使用withDockerContainer()
或docker.build(...).inside(...)
时,jenkins工作区会自动安装到同一位置的容器中(例如,如果jenkins worksapce是/ tmp / jenkins_ws / job_name,则该路径的安装点将以相同的路径-v /tmp/jenkins_ws/job_name:/tmp/jenkins_ws/job_name -w /tmp/jenkins_ws/job_name
添加到容器中。
我想覆盖工作空间安装在容器内的路径。我执行以下docker.build(...).inside("-v $WORKSPACE:/tmp/ws -w /tmp/ws")
,但是当我查看控制台时,我看到该容器是按以下方式创建的(假定阶段中的当前工作空间是/ tmp / jenkins_ws / job_name @ 1
docker run -d -v /tmp/jenkins_ws/job_name@1:/tmp/ws -w /tmp/ws -e ******* -e ******* -v /tmp/jenkins_ws/job_name@1:/tmp/jenkins_ws/job_name@1 -w /tmp/jenkins_ws/job_name@1 IMAGE_NAME cat
请注意,该命令包含我在.inside()
方法中传递的参数,然后插件再次添加了一些内容。
我希望能够将工作空间安装到容器中覆盖默认位置的某个位置。
对于那些对为什么需要执行此操作感兴趣的人,cmake仅在Makefile中生成绝对路径,因此我无法将构建树移至其他位置。我在这里所做的是,我在容器中的一个阶段中进行构建,并且希望并行测试多个阶段中的位,但是要确保容器中的工作空间路径始终相同。