脚本生成 properties
文件到 Execute shell
中的工作空间阻止 Build
部分。该文件在脚本执行后和 Failed
的情况下在工作空间可用构建(Conditional steps (multiple)
block 中的 Build
部分)此属性文件将被注入(inject)。我的 Jenkins 工作会发送一封电子邮件(Editable Email Notification
block )以防万一 Failed
构建,它应该包含属性文件中的变量,但它没有看到这个变量。仅供引用:此 block 可以使用其他环境变量。
我已经交叉检查了属性文件,它在每种情况下都包含所需的变量。
工作空间中的属性文件:
从属性文件注入(inject)环境变量:
这个Steps to to run if condition is met
block 包含更多其他操作,这些操作正常。这意味着运行可以到达这个街区。
后期构建中的可编辑电子邮件通知 block :
如果我检查 Environment Variables
在构建选项中,我可以看到变量:
但是当我收到邮件时,它不包含变量:
知道如何解决它或我应该改变什么?
注意:该变量是唯一的,与 Gerrit
没有真正的关系。所以我不能使用来自 Gerrit
的另一个变量.只是 var 的名称有点棘手。
最佳答案
我找到了我的问题的答案。 Jenkins
或者插件有限制。它无法处理失败状态。如果之前的 execute shell
block 失败则运行不会到达Conditional steps (multiple)
堵塞。
另一方面,我找到了解决此问题的“解决方法”。
1.步骤
您需要退出Execute shell
带有特定返回码的 block 。例如:111
2.步骤
您需要设置 Exit code to set build unstable
归档到您的特定退出代码。 (您可以在 Execute shell
block 的高级选项中找到此字段。)如下图所示。
3.步骤
设置Conditional steps (multiple)
block 来处理 Unstable
状态。使用此解决方案,运行能够运行到 Conditional steps (multiple)
堵塞。
4.步骤
创建 Execute shell
block 内 Conditional steps (multiple)
block 在你准备好一切你想要的东西之后,以防工作失败 .这意味着在此 block 之后,您的工作状态将更改为 Failed
来自 Unstable
.
使用此解决方案,您可以处理失败的工作,最终您将获得真正失败的工作(不是不稳定的)。
不是最优雅的解决方案,但它有效。
关于jenkins - Post-build Actions 部分看不到注入(inject)的环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57380584/