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代码中。

我的解决方案

创建“构建自由式软件项目”。

  1. Jenkins> New Item>构建一个自由风格的软件项目
  2. 添加第一步:执行shell @ Build,并将echo key=value对执行到.properties文件
  3. 添加第2步:注入环境变量,使用步骤2中定义的.properties文件
  4. 添加第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代码中获取。