首页 > 解决方案 > Azure devops 构建管道依赖于其他构建管道

问题描述

我有四个项目。一个是其他三个项目的共同项目。

其他三个项目构建管道依赖于通用构建管道。当公共构建管道正在进行时,其他三个构建管道应该等到公共构建完成。如何在本地 azure devops 中实现这一目标?

标签: azureazure-devops

解决方案


如何在本地 azure devops 中实现这一目标?

您可以在其他三个管道的开头添加一个 PowerShell 任务。

这是 Powershell 脚本示例:

$token = "PAT"

$url="https://{instance}/{collection}/{project}/_apis/build/definitions/{definitionId}?includeLatestBuilds=true&api-version=5.1"

$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))



$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json

$buildid = $response.latestBuild.id

$success = $false

do{
    try{
    $Buildurl2 = "https://{instance}/{collection}/{project}/_apis/build/builds/$($buildid)?api-version=5.0"
    $Buildinfo2 = Invoke-RestMethod -Method Get -ContentType application/json -Uri $Buildurl2 -Headers @{Authorization=("Basic {0}" -f $token)}
    $BuildStatus= $Buildinfo2.status 
    $result = $Buildinfo2.result
    echo $result
    echo $BuildStatus
 
   
        if($BuildStatus -eq "completed") {            

            write-output "No Running Pipeline, starting Next Pipeline"
            $success = $true 
                       
      } else {   
            Write-output "Pipeline Build In Progress, Waiting for it to finish!"  
            Write-output "Next attempt in 30 seconds"
            Start-sleep -Seconds 30         

            }
    
      
    }
    catch{
        Write-output "catch - Next attempt in 30 seconds"
        write-output "1"
        Start-sleep -Seconds 30
      # Put the start-sleep in the catch statemtnt so we
      # don't sleep if the condition is true and waste time
    }
    
    $count++
    
}until($count -eq 2000 -or $success -eq $true )
if ($result -ne "succeeded")
{
   echo "##vso[task.logissue type=error]Something went very wrong."
}

if(-not($success)){exit}

解释:

此 powershell 脚本运行以下两个 Rest API:</p>

定义 - 获取

构建 - 获取

该脚本检查正在进行的管道状态(通过轮询)。如果管道完成并且结果成功,它将运行其他三个管道。或者它将等待管道完成构建。

结果样本:

在此处输入图像描述


推荐阅读