如何从 Docker 容器内发布工件

Tim*_*ers 5 php teamcity artifact docker

我正在运行一个 TeamCity 代理,它生成一个 docker 容器,在该 (php) 容器内运行多个任务。比如phpunit、phplint和composer。如果所有测试都通过,我会压缩容器内的内容,它将创建一个 phpproject.zip。

完成后,我想将该 phpproject.zip 作为工件从 docker 容器内部推送回 TeamCity 服务器。

我的 docker 容器正在使用 --rm 参数运行以在脚本完成后删除容器。

这可能吗?

蒂姆

Tim*_*ers 5

您可以使用-v参数将 Docker 守护程序的卷映射到容器并将工件发布到守护程序:

...
# Your build path and build command here
VOLUME /foo/build
ENTRYPOINT make
Run Code Online (Sandbox Code Playgroud)

在 TeamCity 中,配置一个 Docker构建步骤来构建 Dockerfile,并为生成的镜像命名:标记。添加第二步,在其中配置另一个... Docker 命令 as run参数为

-v /tmp/build:/foo/build --rm <name of image>
Run Code Online (Sandbox Code Playgroud)

结果随后在/tmp/build代理中可用,您可以将其配置为项目设置中的工件路径,或者其他echo "##teamcity[publishArtifacts '/tmp/build']"地方。