从另一个管道触发 Azure DevOps 管道

Rom*_*kha 5 azure devops azure-devops azure-pipelines azure-pipelines-release-pipeline

我正在查看天蓝色触发器文档,但仍然无法找到合适的解决方案。在管道 1 执行过程中,如何触发管道 2,等待其成功完成或失败,并根据管道 2 的结果继续执行管道 1 或失败?

Vit*_*Liu 5

在管道 1 执行过程中,如何触发管道 2,等待其成功完成或失败,并根据管道 2 的结果继续执行管道 1 或失败?

触发一个又一个管道,它将在触发管道成功完成后运行您的管道。我们不能在管道1的执行中使用它来触发管道1。

作为解决方法:

A。我们可以添加任务电源 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
Run Code Online (Sandbox Code Playgroud)

b. 添加任务电源shell并输入代码Start-Sleep -Seconds 1000使管道1休眠

C。在管道1中添加任务power shell,通过REST API获取管道2的构建结果并将结果设置为env变量。

d. 配置下一个任务中的条件以检查 env 变量值。如果值为succeeded,则继续运行管道 1