詹金斯注入环境变量

Vel*_*lth 6 java maven jenkins jenkins-plugins

在Jenkins的工作中,我正在执行一些驻留在前置步骤构建中的操作,例如执行shell脚本.使用Jenkins插件"EnvInject"我想将环境变量注入我的maven构建(单元测试),以便可以在我的Java单元测试中使用它们.在shell脚本里面我做了类似的事情:

echo "ip=$IP" >> unit-test.properties
Run Code Online (Sandbox Code Playgroud)

构建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.
Run Code Online (Sandbox Code Playgroud)

但是我的Java代码(单元测试)中没有"ip"变量.当我对两者进行完整打印时,System.getProperties() and System.getenv()我没有看到"ip"入伍.

我是否需要对maven执行任何特殊操作才能将变量传递给我的Java代码?还有别的错吗?

从这一点开始,我几乎陷入困境,我确实希望key=value从我的Java代码中预先注入一个步骤.

Vel*_*lth 11

我的解决方案

创建"构建自由式软件项目".

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

可以使用key步骤#2中定义的所有自定义环境变量进行访问.这是我发现从shell到java注入环境变量的唯一方法.

如上所述.