我有一个非常简单的Azure Pipeline版本,如果上一个版本中有任何错误,我只想跳过一个阶段。我已经检查过https://docs.microsoft.com/en-us/azure/devops/pipelines/process/conditions?view=azure-devops&tabs=classic
将“测试”作业设置为“仅在所有先前的作业都成功时才运行”无济于事
我的主要目标是,只要在前一个条件中有特定条件,就跳过测试阶段,并且似乎不可能在各个阶段之间传递变量,也没有使用门,所以我不得不想到故意提高舞台上的错误。这些阶段运行一些PS脚本,我也不能因此使整个阶段失败
答案 0 :(得分:0)
据我了解,您需要……feature。因此,如您所见,这是不被支持的。
您可以使用REST API来获取运行版本的状态并分析响应以验证issueType = Error
是否存在任何问题。然后,在此脚本中,您需要调用exit 1
。这不是理想的方法,但是可行。
$uri = "https://vsrm.dev.azure.com/thecodemanual/Devops manual/_apis/release/releases/$(Release.ReleaseId)?api-version=5.1"
Write-Host $(Release.ReleaseId)
Write-Host $uri
# Invoke the REST call
$result = Invoke-RestMethod -Uri $uri -Method Get -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"}
$errors = @()
$result.environments |
ForEach-Object { $_.deploySteps |
ForEach-Object { $_.releaseDeployPhases |
ForEach-Object { $_.deploymentJobs |
ForEach-Object { $_.tasks |
ForEach-Object { $errors += $_.issues | Where-Object { $_.issueType -eq "Error" } }}}}}
Write-Host $errors.Count
if($errors.Count -gt 0) {
Write-Host Error
exit 1
}
没有上面的步骤,我得到了:
此步骤如下:
答案 1 :(得分:0)