簡體   English   中英

鏈接 Azure DevOps 管道

[英]Chaining Azure DevOps pipelines

我希望下面的 Azure DevOps 管道在兩個資源管道成功構建相同的 master 提交時自動觸發。 這可能嗎? 現在,當其中一個管道完成導致兩次運行時,它會觸發。

trigger: none
pr: none

resources:
  pipelines:
    - pipeline: "buildPipeline1"
      source: "BuildPipeline1"
      trigger:
        branches:
        - master

    - pipeline: "buildPipeline2"
      source: "BuildPipeline2"
      trigger:
        branches:
        - master

現在這是不可能的。 您的管道將在任何定義的觸發器傳遞的情況下觸發。 所以如果你需要這樣的東西,你需要使用 webhooks 構建。 例如,您可以在管道成功時調用 Azure 函數。 在某些數據庫或其他形式的狀態中跟蹤管道 A 為提交 32563456 運行,然后當管道 B 為相同提交運行並且您的函數收到通知時,您將從 Azure 函數觸發此管道。

我知道這聽起來像很多工作,但不支持開箱即用。

抱歉,暫時不能。

對於管道觸發器,我們只能在另一個管道完成時觸發一個管道,將觸發管道指定為管道資源。

你可以在這里參考我們的官方文檔—— 觸發一個又一個的管道

我能遇到的唯一解決方法是,在兩個管道的末尾添加一個任務,如果相同的提交構建和構建成功,則查詢另一個管道的狀態。

最后,我們可以添加任務 power shell 並添加腳本以調用 REST API 以根據先前的任務結果對構建/任何其他管道進行排隊。

$connectionToken="PAT"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
$PipelineUrl = "https://dev.azure.com/{Org name}/{project name}/_apis/pipelines/{Pipeline ID}/runs?api-version=6.0-preview.1" 

$body ="{ 
 `"resources`":{
        `"repositories`":{
            `"self`":{`"refName`":`"refs/heads/master`"
            }
         }
    }
}"
$Pipelines = Invoke-RestMethod -Uri $PipelineUrl -ContentType "application/json" -Body $body -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method POST

暫無
暫無

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

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