如何获取/获取 Jenkins 管道中设置的环境变量到我们的 maven pom.xml

Posted

技术标签:

【中文标题】如何获取/获取 Jenkins 管道中设置的环境变量到我们的 maven pom.xml【英文标题】:How to get/fetch the environment variables set in Jenkins pipeline into our maven pom.xml 【发布时间】:2021-10-29 08:24:14 【问题描述】:

我使用 Jenkins 管道设置了几个环境变量。

我想在我的 maven pom.xml 文件中获取这些环境变量的值,我想将它们作为 buildArgs 传递给 docker-maven-plugin,它将在 dockerfile 中再次调用。

如何在我的 pom.xml 中调用这些环境变量?

我尝试了$env.JENKINS_USER_NAME%JENKINS_USER_NAME%,但似乎没有任何效果。

用例:我将运行我的 Jenkins 管道作业来构建我的项目,最终将在 Stage-1 中创建一个 docker 映像,然后在 Stage-2 中运行 docker 容器(这将也可以在内部运行测试)。

问题:我的 Jenkins 作业可以根据用户选择的特定 testng.xml 文件来触发,如下所示:

当触发一次时,它工作正常,但如果我们在不清理工作区的情况下第二次触发,那么它会抛出类似的错误

我假设这可能是权限问题,因为我正在安装卷以将容器测试输出目录与 Jenkins 主机-VM 目录映射

如何在我的 POM 中获取环境变量?

【问题讨论】:

几个问题。你的主要问题是什么? #1 将 env 变量从 jenkins 管道传递到您的应用程序 (pom.xml) #2 第二次执行会引发错误? #3 如果您的 java 应用程序是标准的,我建议使用干净的 Dockerfile 而不是 maven 插件。如果对你有帮助,我会为你提供一个 Dockerfile #1 是我的问题。描述用例的剩余细节。关于#3,我们需要使用 docker-maven 插件,因为还有其他一些要求。 【参考方案1】:

将值定义为maven properties (with defaults),然后您可以在 Maven 命令行中使用从下拉列表中填充的 Jenkins 环境变量的属性覆盖它们。

pom.xml:

<properties>
        <gid>default-gid</gid> 
        <uid>default-uid/<uid> 
        <uname>default-uname</uname> 
</properties>

<configuration>
    <buildArgs>
        <GID>$gid</GID> 
        <UID>$uid/<UID> 
        <UNAME>$uname</UNAME> 
    </buildArgs> 
</configuration>

SH EXEC CMD:

mvn -Dgid=my-gid -Duid=my-uid -Duname=my-uname clean system-test:latest $TestSuiteFiles

【讨论】:

以上是关于如何获取/获取 Jenkins 管道中设置的环境变量到我们的 maven pom.xml的主要内容,如果未能解决你的问题,请参考以下文章

如何在詹金斯中获取管道作业的 URL

如何在 Jenkins 声明式管道中设置 PATH

iOS:如何获取刚刚在界面生成器中设置的 UIView 的框架

如何获取有关谁更改了我在手表中设置的变量的信息(角度)

如何以编程方式获取 /permissve- 在 VS2017 Update8.2 中设置的所有编译器标志

如何获取一个元素没有在style和样式表中设置的样式的值?