如何在 Dockerfile 中插入 Jenkins 环境变量?

如何在 Dockerfile 中插入 Jenkins 环境变量?

我有一个 Jenkins 流水线,
流水线的一个阶段是从 Java 应用程序代码构建工件。
工件始终使用 BUILD_ID jenkins 环境变量获取名称 hello-world-${BUILD_ID}.war,每次构建时工件的名称都会更改。

然后,我还有另一个阶段,我必须为这个工件构建一个 docker 镜像。Docker
文件中的其中一行是:
COPY hello-world-war-1.0.${BUILD_ID}.war /usr/local/tomcat/webapps/java-app.war
在这一行中,我必须将工件复制到 docker 镜像中。

由于某种原因,提到的插值不起作用,当我运行管道时出现相同的错误:
COPY failed: stat hello-world-war-1.0..war: no such file or directory

当然,当我在 Dockerfile 中对构建 ID 的数量进行硬编码时,一切都运行良好。

附件是整个Dockerfile 的截图。

在此先感谢您的帮助!

在此处输入图片描述

答案1

你必须BUILD_ID通过建立论点

在你的Dockerfile

ARG BUILD_ID

在您的docker build命令中:

docker build ... --build-arg BUILD_ID="${BUILD_ID}" ...

环境变量${BUILD_ID}不会传递给 Dockerfile 命令。这是自愿的,因为docker build应该尽可能地可重现,而不依赖于构建上下文。如果您想要在构建过程中使用变量,则必须明确设置它。

相关内容