我有一个包含许多作业的azure-pipelines.yml
文件。
dependsOn:
文件中没有azure-pipelines.yml
,因此作业可以并行运行。
如果任何作业失败,我希望Azure不启动任何排队的作业。我不想取消任何正在运行的作业,也不想取消整个管道。
我看不到使用condition来做到这一点的方法,但是也许我缺少一些东西。 另一种可能性是让每个作业创建一个pipeline artifact文件来指示其成功或失败状态,然后每个作业将查看是否有其他作业失败了。这似乎需要开始工作,我希望工作根本不开始。
您能提出实现我目标的方法吗?
答案 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)