簡體   English   中英

Azure DevOps 版本跳過任務

[英]Azure DevOps Releases skip tasks

我目前正致力於在 Azure DevOps 2020(內部部署)中為我的公司實施 CI/CD 管道。 有一個要求我似乎無法方便地解決:根據用戶在發布管道中的輸入跳過某些任務。

我想要的是:用戶手動創建新版本並決定是否應執行任務組。

代理任務:

 1. Powershell
 2. Task Group (conditional)
 3. Task Group
 4. Powershell

我試過的:

  • 根據手動干預任務將任務拆分為任務組的多個作業。
    • 不起作用,如果手動干預被拒絕,則整個執行將因失敗而停止。
  • 將任務分成多個階段,幾乎與上述相同,結果相同。
  • 將任務分成多個階段手動觸發每個階段。
    • 不是很有用,因為你必須以正確的順序執行你想要的,並且在前面的階段成功之后。
  • 發布創建時設置的變量(真/假)。
    • 如果沒有更好的東西出現,但有點容易出現錯別字並且對於將使用它的同事來說不太有用,將使用它。 不幸的是,Azure DevOps 似乎不支持發布的下拉或復選框變量。 (但適用於構建中的參數)
  • 兩個階段,一個是任務 1、2、3、4,一個是任務 1、3、4。
    • 由於重復,對我來說不是很理想。

任何幫助將不勝感激!

取決於管道運行的標准是什么。 一項建議是兩條流水線調用相同的模板。 並且每個管道中可能嵌入了一個真/假作為參數傳遞給模板。

模板將包含定義的所有任務; 但是,有條件的將具有以下條件:

 condition: and(succeeded(), eq('${{ parameters.runExtraStep}}', true)) 

此條件將在任務級別設置。

可以在相應的管道中定義任何特定的觸發器。

以下是有關Azure YAML 模板的文檔,可幫助您入門。

不幸的是,不可能為任務組添加自定義條件,但此功能在路線圖上。 檢查以下用戶聲音,您可以投票:

https://developercommunity.visualstudio.com/idea/365689/task-group-custom-conditions-at-group-and-task-lev.html

解決方法是您可以克隆發布定義(右鍵單擊發布定義> 克隆),然后刪除一些任務或任務組並保存它,然后您可以根據詳細場景創建具有相應發布定義的發布。

最后我決定堅持使用 Releases 並將我的任務分成 3 個代理工作。 作業 1 帶有第一個 powershell,作業 2 帶有條件任務組,僅當變量為真時才執行,作業 3 帶有其余任務。

正如cece-dongdreadedfrost所說的那樣,我可以使用 yaml 管道為條件實現可選的運行時參數。 不幸的是,其中一個任務組需要來自 yaml 管道的特定工件。 大多數時候它是“最新的”,這可以通過下載工件任務輕松實現,但有時會選擇以前的工件。 我發現沒有一種簡單的方法可以像在默認情況下有一個包含工件列表的下拉列表的版本一樣方便的方式來實現這一點。

如果有人對如何在 yaml 管道中處理不同的構建工件感興趣,可以找到這篇博文

謝謝你的協助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM