Azure管道:如果任何作业失败,请勿开始新的作业

时间:2020-07-12 00:39:27

标签: azure-devops

我有一个包含许多作业的azure-pipelines.yml文件。 dependsOn:文件中没有azure-pipelines.yml,因此作业可以并行运行。

如果任何作业失败,我希望Azure不启动任何排队的作业。我不想取消任何正在运行的作业,也不想取消整个管道。

我看不到使用condition来做到这一点的方法,但是也许我缺少一些东西。 另一种可能性是让每个作业创建一个pipeline artifact文件来指示其成功或失败状态,然后每个作业将查看是否有其他作业失败了。这似乎需要开始工作,我希望工作根本不开始。

您能提出实现我目标的方法吗?

1 个答案:

答案 0 :(得分:0)

如果要并行运行作业(无依赖项),则无法使用条件。如果要检查其他作业状态,则需要启动作业。也许您可以添加一个PowerShell任务,以在任务失败时取消管道,如this case所述:

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)