一尘不染

Jenkins注入环境变量

jenkins

在詹金斯(Jenkins)的工作中,我正在执行预构建中的一些操作,例如执行Shell脚本。通过使用Jenkins插件“
EnvInject”,我想将环境变量注入到我的Maven构建(单元测试)中,以便可以在Java单元测试中使用这些变量。在shell脚本中,即时消息执行类似以下操作:

echo "ip=$IP" >> unit-test.properties

在构建Jenkins时,输出以下内容:

[EnvInject] - Injecting environment variables from a build step.
[EnvInject] - Injecting as environment variables the properties file path 'unit-test.properties'
[EnvInject] - Variables injected successfully.

但是“ ip”变量在我的Java代码(单元测试)中不可用。当我同时打印两个文件时,System.getProperties() andSystem.getenv()看不到已列出的“ ip”。

我是否需要执行任何特殊操作以使maven将该变量传递给我的Java代码?还有其他问题吗?

从现在开始,我几乎陷入了僵局,我确实想key=value从前一步将a 注入我的Java代码中。


阅读 681

收藏
2020-07-25

共1个答案

一尘不染

我的解决方案:

创建一个“构建自由样式的软件项目”。

  1. Jenkins>新项目>构建自由样式的软件项目
  2. 添加第一步:执行shell @ Build,并将key=value对回显到.properties文件
  3. 添加第二步:注入环境变量,使用步骤2中定义的.properties文件
  4. 添加第3步:调用顶级Maven目标

可使用key步骤2中定义的来访问所有自定义环境变量。这是我发现将环境变量从Shell注入Java的唯一方法。

2020-07-25