jenkins注入环境变量
在Jenkins的工作中,我正在执行一些驻留在前置步骤构建中的操作,例如执行shell脚本。 使用Jenkins插件“EnvInject”我想将环境变量注入我的maven构建(unit testing),以便可以在我的Javaunit testing中使用它们。 在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代码(unit testing)中没有“ip”变量。 当我对System.getProperties() and System.getenv()
进行完整打印时,我没有看到“ip”已登记。
我是否需要对maven执行任何特殊操作才能将变量传递给我的Java代码? 还有别的错吗?
从这一点开始我几乎停滞不前,我确实希望从前一步中将一个key=value
注入到我的Java代码中。
我的解决方案
创建“构建自由式软件项目”。
- Jenkins> New Item>构建一个自由风格的软件项目
- 添加第一步:执行shell @ Build,并将echo
key=value
对执行到.properties文件 - 添加第2步:注入环境变量,使用步骤2中定义的.properties文件
- 添加第3步:调用顶级Maven目标
可以使用步骤2中定义的key
访问所有自定义环境变量。 这是我发现从shell到java注入环境变量的唯一方法。
我的项目中有类似的要求,除了我的项目是Maven。 要使用jenkins中的变量值到我的java代码,我在“Build- > Advanced-> JVM Options”中使用了-DargLine =“ – DEnv = $ Environment ”。 从我的java代码中,我使用System.getProperty()获取了“Env”的值。 FYI“Environment”是我的Jenkins变量,“Env”是变量,它将从jenkins传递的值存储到其变量(Environment)中,并使用System.getProperty()在java代码中获取。
- 在Spring Boot中配置0-legged OAuth 1.0
- Spring 4 + Hibernate 5 = org.springframework.orm.jpa.EntityManagerHolder无法强制转换为org.springframework.orm.hibernate5.SessionHolder
- 来自commons-httpclient-3.1的URIUtil.encodePath发生了什么?
- Java EE快速通道(学习企业Java真快)
- 将Dynamic Web Project导入Eclipse
- 如何将bytearray转换为Jar
- 抛出UnsupportedOperationException
- 为自定义屏障设计测试类
- TRIGGER AUTO_NUM_GEN编译警告:执行完成并发出警告