4

作为 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

4

1 回答 1

9

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

  • 安装EnvInject 插件
  • 设置环境变量并保存到表单中的属性文件中VAR=VALUE
  • 在下一个构建步骤中,使用 EnvInject 插件导入文件(安装插件后,您将在构建步骤选项中看到“注入环境变量”)。这些变量将在整个构建过程中可用。
于 2012-05-16T20:26:57.460 回答