Я согласен с логикой c, о которой упоминал @Krzysztof, НО это кажется неудобным для вашего сценария, поскольку ваш следующий процесс - steps
, а не jobs
. Это означает, что вам нужно настроить condition
на все последующие шаги, чтобы пропустить их.
У меня есть другая идея. Вы можете добавить один powershell
шаг после вашего Release artifacts
шага. Условие выполнения этого powershell
шага - только предыдущий Release artifacts
успешный шаг.
На этом шаге powershell вы можете запустить один API, чтобы отменить текущий конвейер. В двух словах, когда выполнение шага Release artifacts
выполнено успешно, пропустите все последующие шаги и задания и отмените текущий конвейер напрямую.
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
[String]$project = "$env:SYSTEM_TEAMPROJECT"
[String]$OrgUri = "$env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"
$header = @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"}
$pipeline = $OrgUri + $project + "/_apis/build/builds/" + $(Build.BuildId) + “?api-version=6.0-preview.5"
$Body=@"
{"status":4}
"@
Invoke-RestMethod -Uri $pipeline -Method PATCH -Body $Body -ContentType "application/json" -Headers $header
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
Таким образом, вам не нужно настраивать condition
для всех следующих задач или заданий.