Jenkins 注入环境变量

Jenkins inject environment variable

在 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 代码吗?还有什么问题吗?

从这一点开始,我几乎陷入困境,我确实想在我的 Java 代码中从前一步注入 key=value

我的项目也有类似的需求,只不过我的项目是Maven。为了将 jenkins 中的变量值用于我的 java 代码,我在 "Build->Advanced->JVM Options" 中使用了 -DargLine="-DEnv=$Environment"。从我的 java 代码中,我使用 System.getProperty() 获取了 "Env" 的值。仅供参考 "Environment" 是我的 Jenkins 变量,"Env" 是变量,它将从 jenkins 传递的值存储到它的变量(环境)中,并使用 System.getProperty() 在 java 代码中获取.

我的解决方案:

创建 "Build a free-style software project".

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

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