首页 > 解决方案 > Jenkins 在 docker 中构建并复制工件

问题描述

我要做的是使用 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 的。由于某种原因,使用insideJenkins 试图传递很多参数:

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

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

标签: dockerjenkinsjenkins-plugins

解决方案


推荐阅读