[英]Azure DevOps pipeline condition - Why include "and always"?
在Azure DevOps 管道中的条件文档中,给出了以下示例:
and(always(), eq(variables['Build.Reason'], 'Schedule'))
为什么要包含“and(always()”部分?据我了解,它在语义上等同于:
eq(variables['Build.Reason'], 'Schedule')
还是我错过了什么?
这个例子的标题是“运行如果构建被安排,即使失败,即使被取消”。
所以,这个条件:
eq(variables['Build.Reason'], 'Schedule')
用于“如果计划构建则运行”部分。
而这个条件:
always()
用于“即使失败,即使取消”部分。
这两个由and(...)
组成。 而已。
你是对的 Kristoffer,这两个条件在行为上是等效的。
不过,我会提供一个使用长版本的理由:
and(always(), eq(variables['Build.Reason'], 'Schedule'))
在编写任务条件时,很容易忘记succeeded()
是默认值,如果你不包含它,那么即使作业失败或取消,你的任务也会运行。
所以我认为在表达式中包含succeeded()
(或always()
或cancelled()
或其他)编写所有条件是一个好习惯; 然后,如果您看到没有它的情况,如下所示:
eq(variables['Build.Reason'], 'Schedule')
然后提醒您质疑该条件是否旨在包括失败/取消的工作。
将其更改为长版本可以消除该错误的风险。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.