繁体   English   中英

Jenkins 在 docker 中构建并复制工件

[英]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这样的路径。 当我尝试使用runwithRun它会在主机上执行sh命令,因此那里没有/src/dist文件夹。

在这种情况下运行容器的正确方法是什么?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM