在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() and System.getenv()
时,我没有看到登记的"ip“。
我需要对maven执行任何特殊操作才能将变量传递给我的Java代码吗?还有什么不对劲吗?
从这一点开始,我几乎被困住了,我确实想把前一步中的key=value
注入到我的Java代码中。
发布于 2015-07-06 09:04:21
我的解决方案是:
创建一个“构建一个自由风格的软件项目”。
key=value
对回显到.properties文件所有自定义环境变量都可以通过步骤2中定义的key
访问。这是我发现的将环境变量从shell注入到java的唯一方法。
发布于 2015-07-03 10:54:34
我在我的项目中也有类似的需求,除了我的项目是Maven。为了在java代码中使用jenkins的变量值,我在"Build->Advanced->JVM Options“中使用了-DargLine="-DEnv=$Environment"。从我的java代码中,我使用System.getProperty()获取了"Env“的值。FYI "Environment“是我的Jenkins变量,"Env”是存储从jenkins传递到其变量(Environment)的值并使用System.getProperty()在java代码中获取的变量。
https://stackoverflow.com/questions/31203816
复制