azure pipelines - 如何根据条件任务结果中断/取消发布

Bar*_*osz 1 azure-devops azure-pipelines-build-task azure-pipelines azure-pipelines-release-pipeline

我有一个由 CI 触发的发布管道,如果该版本尚不存在,我想推送新版本的 nuget 包。

为此,我有一个简单的命令行任务,它检查 nuget.org 上是否存在该 nuget 并将结果存储在环境变量中。

然后,我可以设置后续步骤的条件,只有当该值变量为 true 时才会执行该步骤。

在此输入图像描述

这一切都很好,但是我想知道如何简单地停止发布过程并跳过所有后续步骤,而不需要一一设置它们的条件。

另外,如何将任务的构建状态设置为“已取消”?

Sha*_*zyk 5

您可以使用 PowerShell 任务取消当前的构建或发布:

Write-Host "##vso[task.setvariable variable=agent.jobstatus;]canceled"
Write-Host "##vso[task.complete result=Canceled;]DONE"
Run Code Online (Sandbox Code Playgroud)

因此,在发布管道中添加一个包含上述代码的 Powershell 任务,并在自定义条件下将其配置为仅在您不想上传 NuGet 时运行,在此任务之后的所有任务都将被取消。

PS - 状态将为“成功”,但实际上构建/发布将被取消。

如果您想查看“已取消”状态,则需要使用 Rest API,请检查PowerShell 脚本。

  • 我尝试了这两行,但得到了这个:`##[警告]覆盖只读任务变量'agent.jobstatus'。此行为将来将被禁用。有关详细信息,请参阅 https://github.com/microsoft/azure-pipelines-yaml/blob/master/design/readonly-variables.md。 (2认同)
  • 我也只尝试了第二行..但没有运气,构建仍在继续。 (2认同)