首页 > 解决方案 > 如何获取/获取 Jenkins 管道中设置的环境变量到我们的 maven pom.xml

问题描述

我有几个使用 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 中获取环境变量?

标签: mavenjenkinsjenkins-pipelinepom.xml

解决方案


将这些值定义为Maven 属性(使用默认值),然后您可以在 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 执行命令:

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


推荐阅读