在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.
但是我的Java代码(单元测试)中没有“ip”变量。当我对System.getProperties() and System.getenv()
进行完整打印时,我没有看到“ip”被列入。
我是否需要对maven执行任何特殊操作才能将变量传递给我的Java代码?还有别的错吗?
从这一点开始,我几乎陷入困境,我确实希望从前面的步骤中注入一个key=value
到我的Java代码中。
答案 0 :(得分:11)
我的解决方案:
创建一个"构建一个自由风格的软件项目"。
key=value
对回显到.properties文件可以使用步骤#2中定义的key
访问所有自定义环境变量。
这是我发现从shell到java注入环境变量的唯一方法。
答案 1 :(得分:0)
我的项目有类似的要求,除了我的项目是Maven。要使用jenkins中的变量值到我的java代码,我使用了 -DargLine =" -DEnv = $ Environment" " Build-> Advanced-> JVM选项&#34 ;.从我的java代码中,我获得了" Env"的价值。使用System.getProperty()。仅供参考"环境"是我的Jenkins变量," Env"是变量,它将从jenkins传递的值存储到其变量(Environment)中,并使用System.getProperty()在java代码中获取。