一尘不染

Jenkins:在电子邮件正文中报告中间[Windows Batch]构建步骤的结果

jenkins

作为Jenkins构建过程的一部分,我们运行了几个Windows批处理脚本,并希望在Jenkins最后发送的电子邮件中报告有关这些中间步骤的一些信息。

我认为一种简单的方法是在批处理步骤中设置Windows环境变量,我们设法使用PowerShell进行了设置,如下所示:

powershell.exe -Command "& {[Environment]::SetEnvironmentVariable('ThisIsATest', 'TestValue', 'Machine')}"

在“执行Windows批处理命令”构建步骤中执行时,这将正确地“最终”设置环境变量。意思是说,如果我远程访问构建服务器,则可以验证该值是否在每次构建期间均按预期方式创建/修改。

但是,尝试通过添加来使用“后生成操作”下的“可编辑电子邮件通知”步骤中的值

Our test value: ${ENV, var="ThisIsATest"}

“默认内容”部分中的“错误”不会给出正确的结果。使用

Print full environment: ${ENV}

还显示该值具有“ 尚未” 被创建。

甚至更奇怪的是,即使我在远程会话中可以清楚地看到它(并跟踪对它的更改等),多次运行也根本不会拾取有问题的环境变量。

问题:

  • 还有其他方法可以实现我们的目标:

“在编译成功/失败时报告常规成功/失败/单元测试,但在电子邮件正文中还报告了中间步骤的其他信息”?

  • 或者,也许可以解释有关电子邮件插件未选择预期的环境变量的 奇怪 行为(至少对我来说)?(也许可以就在哪里寻找解决方法给出一些新的想法)

感谢您抽时间阅读。与往常一样,任何建议都值得赞赏。

-T


阅读 295

收藏
2020-07-25

共1个答案

一尘不染

在“正常”情况下,在构建步骤中设置的环境变量不会传播到外部。您可以执行以下操作:

  • 安装EnvInject插件
  • 设置环境变量并将其保存为以下格式的属性文件 VAR=VALUE
  • 在接下来的构建步骤中,使用EnvInject插件导入文件(安装该插件后,您将在构建步骤选项中看到“注入环境变量”)。变量将在整个构建过程中可用。
2020-07-25