EnvInject 插件支持在 Jenkins 构建中动态注入 .properties 文件定义的环境变量。需先安装插件,再在构建步骤生成 report.env 文件,接着在构建环境配置中指定该文件路径完成注入,最后可在后续步骤直接引用如 $TOTAL、$FAILED 等变量。

在 Linux 环境中,Jenkins 的 Environment Injector Plugin(也称 EnvInject)可用于将构建过程中动态生成的元数据注入为环境变量,供后续步骤(如 Shell 脚本、邮件模板、Pipeline 阶段)直接引用。关键不在于“预设值”,而在于让 Jenkins 在构建执行中实时读取并加载这些数据。
确保插件已安装并启用
进入 Jenkins 管理界面 → 插件管理 → 可用插件中搜索 Environment Injector → 勾选安装 → 安装完成后重启 Jenkins。验证方式:新建一个自由风格项目,在“构建环境”区域应出现 Inject environment variables 选项。
在构建中生成元数据文件(.properties 格式)
元数据必须以 Java .properties 文件格式输出,每行一个 KEY=VALUE 键值对,无空格、无注释、无引号。推荐在 构建步骤 → 执行 shell 中生成:
- 例如,统计测试结果后写入
report.env:
echo "TOTAL=$(grep -c 'test' target/test-results.txt 2>/dev/null || echo 0)" > report.env<br>echo "PASSED=$(grep -c 'PASS' target/test-results.txt 2>/dev/null || echo 0)" >> report.env<br>echo "FAILED=$(grep -c 'FAIL' target/test-results.txt 2>/dev/null || echo 0)" >> report.env<br>echo "EXECUTE_TIME=$(date '+%Y-%m-%d %H:%M:%S')" >> report.env
- 该脚本会生成类似内容:
TOTAL=142<br>PASSED=135<br>FAILED=7<br>EXECUTE_TIME=2026-05-08 04:22:10
- 文件路径建议使用工作区相对路径(如
report.env),避免硬编码绝对路径
配置 Environment Injector 加载该文件
在同个 Job 的“构建环境”中勾选 Inject environment variables,然后填写:
-
Properties File Path:填入上一步生成的文件名,如
report.env - 保持 Keep Jenkins Environment Variables 和 Keep System Environment Variables 勾选(默认),确保原有变量不被覆盖
- 不要勾选 Inject passwords to the build as environment variables(除非你确需密码注入且已配置凭据)
注意:此步骤必须放在 生成 report.env 的 Shell 步骤之后,否则文件还不存在,注入会失败且无报错提示。
在后续步骤中安全引用注入的变量
注入后,所有变量自动成为当前构建的环境变量,可直接在 Shell、Groovy 或邮件模板中使用:
- Shell 中:
echo "共运行 $TOTAL 条用例,失败 $FAILED 个" - Pipeline 脚本中:
sh 'echo Build finished at $EXECUTE_TIME' - Email Extension 插件模板中:
${ENV, var="FAILED"}或${ENV, var="EXECUTE_TIME"}
⚠️ 重要提醒:若生成文件的 Shell 步骤因错误退出(exit code ≠ 0),EnvInject 步骤将跳过执行——建议在关键生成脚本末尾加 exit 0,或在 Jenkins 全局配置中将非零退出码设为 Unstable 而非 Failure,确保注入逻辑不中断。











