使用 azure-pipeline.yaml 文件从 Azure Pipeline 获取构建状态

Get Build Status from Azure Pipeline using azure-pipeline.yaml file

如何在 post 构建中配置 azure-pipeline.yaml 文件以获取构建状态?我必须通过在 azure-pipeline.yaml 文件中使用 azure-devops-rest-apiazure-devops-node-api 来获取管道的当前构建状态。

请帮忙!

How to configure azure-pipeline.yaml file in post build to get the build status?

我们可以使用 REST API Builds - List 来获取详细的构建信息:

https://dev.azure.com/{organization}/{project}/_apis/build/builds?definitions={definitions}&api-version=5.1

在 YAML 中,我们可以添加一个 powershell 任务来获取构建结果,例如:

- task: PowerShell@2
  inputs:
   targetType : inline
   script: |
     $url = "https://dev.azure.com/{organization}/{project}/_apis/build/builds?definitions={definitionID}&api-version=5.1"
     $connectionToken="Your PAT Here"
     $base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))

       $buildPipeline= Invoke-RestMethod -Uri $url -Headers @{authorization = "Basic $base64AuthInfo"} -Method Get


       $BuildResult= $buildPipeline.value.result | Select-Object -first 1


       Write-Host This is Build Result: $BuildResult

我们列出指定定义的所有构建结果,然后使用 Select-Object -first 1 获取最新的构建结果。

作为测试,使用 REST API,我们可以获得当前管道的 最新构建 的结果,但我们无法获得我们这次执行的构建结果

此外,还有一个Predefined variables,我们可以通过预定义变量Agent.JobStatus检查获取管道的当前构建状态,所以我添加了一个命令行任务来输出这个值在 YAML 中:

- script: |
   echo $(Agent.JobStatus)

这个变量可以获得当前构建状态。

希望对您有所帮助。