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".
- Jenkins > 新项目 > 构建一个自由风格的软件项目
- 添加第 1 步:执行 shell @Build,并将
key=value
对回显到 .properties 文件
- 添加第 2 步:注入环境变量,使用第 2 步中定义的 .properties 文件
- 添加第 3 步:调用顶级 Maven 目标
所有自定义环境变量都可以使用步骤 #2 中定义的 key
访问。
这是我发现将环境变量从 shell 注入到 java 的唯一方法。
在 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".
- Jenkins > 新项目 > 构建一个自由风格的软件项目
- 添加第 1 步:执行 shell @Build,并将
key=value
对回显到 .properties 文件 - 添加第 2 步:注入环境变量,使用第 2 步中定义的 .properties 文件
- 添加第 3 步:调用顶级 Maven 目标
所有自定义环境变量都可以使用步骤 #2 中定义的 key
访问。
这是我发现将环境变量从 shell 注入到 java 的唯一方法。