繁体   English   中英

Azure DevOps 管道条件 - 为什么包括“并且始终”?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM