在有關 Azure DevOps 管道條件的檔案中,給出了以下示例:
and(always(), eq(variables['Build.Reason'], 'Schedule'))
為什么要包含“and(always()”部分?據我所知,它在語意上等同于:
eq(variables['Build.Reason'], 'Schedule')
或者我錯過了什么?
uj5u.com熱心網友回復:
你是對的 Kristoffer,這兩個條件在行為上是等價的。
不過,我會提供一個使用長版本的理由:
and(always(), eq(variables['Build.Reason'], 'Schedule'))
在撰寫任務條件時,很容易忘記這succeeded()是默認設定,如果您不包含它,那么即使作業失敗或取消,您的任務也會運行。
所以我認為將所有條件都包含在運算式中succeeded()(或always()或cancelled()或其他)是一種很好的做法;那么如果你看到一個沒有它的條件,就像這樣:
eq(variables['Build.Reason'], 'Schedule')
然后提醒您質疑該條件是否旨在包括失敗/取消的作業。
將其更改為長版本可以消除該錯誤的風險。
uj5u.com熱心網友回復:
此示例的標題為“如果構建已安排則運行,即使失敗,即使已取消”。
所以,這個條件:
eq(variables['Build.Reason'], 'Schedule')
用于“如果計劃構建則運行”部分。
而這個條件:
always()
用于“即使失敗,即使取消”部分。
這兩個是由and(...). 而已。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/381684.html
標籤:天蓝色 azure-devops 天蓝色管道
上一篇:AzureApi服務請求限制
