[英]Jenkins build in docker and copy artifacts
我想要做的是使用 docker 容器构建应用程序,然后从中复制工件。 要构建应用程序,我只需创建 docker 镜像:
def image = docker.build(
"build-image:${BuildNumber}",
"--build-arg output_path=/output\
-f src/Dockerfile .")
它工作正常。 现在我需要从中复制工件。 这个想法是使用虚拟文件夹运行图像并将工件复制到该文件夹中。
image.inside("-v \"${WORKSPACE}/src:/output\"") {
sh "ls \
&& mkdir -p /output/built \
&& cp -r /src/dist/* /output/built"
}
看起来问题在于主机环境是 Windows 而容器是基于 alpine 的。 由于某种原因, inside
Jenkins inside
使用试图传递很多参数:
WindowsBuild does not seem to be running inside a container
$ docker run -d -t -w c:/jenkins-slave/workspace/Build-Pipe/src/ -v c:/jenkins-slave/workspace/Build-Pipe/src/:c:/jenkins-slave/workspace/Build-Pipe/src/ -v c:/jenkins-slave/workspace/Build-Pipe/src@tmp/:c:/jenkins-slave/workspace/Build-Pipe/src@tmp/ -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** build-image:105 cmd.exe
当然它失败了,因为 Alpine 不理解容器内像c:/jenkins-slave
这样的路径。 当我尝试使用run
或withRun
它会在主机上执行sh
命令,因此那里没有/src/dist
文件夹。
在这种情况下运行容器的正确方法是什么?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.