是 Azure DevOps 构建管道,有没有办法从另一个作业中取消一个管道作业?

Sam*_*ley 4 azure-devops azure-pipelines

我有一个 Azure DevOps 构建管道,其中包含两个代理作业,我将其称为作业 A 和作业 B。我希望这些作业同时运行,但如果作业 A 失败,那么我不需要作业 B 运行完成。

有没有办法向作业 A 添加一个任务,如果作业 A 的任何任务失败,该任务将取消作业 B(或者,以“失败”状态终止整个管道)?

Sha*_*zyk 6

添加一个在任务失败时取消管道的 PowerShell 任务:

steps:
- powershell: |
   Write-Host "Cancel all jobs..."
   $url = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)$env:SYSTEM_TEAMPROJECTID/_apis/build/builds/$($env:BUILD_BUILDID)?api-version=2.0"
    $header = @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"  }
    $body = @{ 'status'='Cancelling' } | ConvertTo-Json
    Invoke-RestMethod -Uri $url -Method Patch -Body $body -Headers $header -ContentType application/json
  displayName: Cancel the pipeline
  condition: failed()
  env:
       System_AccessToken: $(System.AccessToken)
Run Code Online (Sandbox Code Playgroud)

结果:

在此输入图像描述

  • 因此,这非常接近我希望的结果,但不幸的是,它使整个管道运行处于“已取消”状态,而不是“失败”状态,这是我的案例的具体要求。您是否知道是否有任何方法可以通过 REST API 取消管道的作业,但让整个管道以“失败”状态完成? (2认同)