Post-build Actions部分没有看到注入的环境变量

Post-build Actions part does not see injected environment variable

脚本生成一个 properties 文件以在 Build 部分的 Execute shell 块中工作-space。此文件在工作时可用 - space 在脚本执行后,如果是 Failed 构建(Build 部分中的 Conditional steps (multiple) 块),将注入此属性文件。我的 Jenkins 作业会发送一封电子邮件(Editable Email Notification 块)以防万一 Failed 构建并且它应该包含来自属性文件的变量但它没有看到这个变量。仅供参考:此块可以使用其他环境变量。 我已经交叉检查了属性文件,它在每种情况下都包含所需的变量。

工作中的属性文件-space:

从属性文件注入环境变量:

Steps to to run if condition is met 块包含更多其他操作,这些操作正常。这意味着 运行 可以到达此块。

Post-build 中的可编辑电子邮件通知块:

如果我在构建中选中 Environment Variables 选项,我可以看到变量:

但是当我收到邮件时,它不包含变量:

知道我该如何解决它或我应该改变什么吗?

注意: 该变量是唯一的并且与 Gerrit 没有真正相关,所以我不能使用来自 Gerrit 的另一个变量。只是var的名字有点棘手。

我找到了问题的答案。 Jenkins 或插件有限制。它无法处理失败状态。如果前一个 execute shell 块失败,那么 运行ning 将不会到达 Conditional steps (multiple) 块。

另一方面,我找到了这个问题的 "workaround"。

1.步骤

您需要使用特定的 return 代码退出 Execute shell 块。例如:111

2。步骤

您需要将 Exit code to set build unstable 文件设置为您的特定退出代码。 (您可以在 Execute shell 块的高级选项中找到此字段。)如下图所示。

3。步骤

设置Conditional steps (multiple)块来处理Unstable状态。使用此解决方案,运行ning 能够 运行 进入 Conditional steps (multiple) 块。

4.步骤

Conditional steps (multiple) 块内创建一个 Execute shell在你准备好所有你想要的以防作业失败后。这意味着在此块之后,您的工作状态从 Unstable 更改为 Failed

使用这个解决方案你可以处理失败的工作,最后你会得到一个真正失败的工作(不是不稳定的)。

不是最优雅的解决方案,但它有效。