【问题标题】:azure pipelines - how to break / cancel a release based on a conditional task result天蓝色管道 - 如何根据条件任务结果中断/取消发布
【发布时间】:2019-04-28 14:38:49
【问题描述】:

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

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

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

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

此外,如何将构建状态设置为“已取消”?

【问题讨论】:

    标签: azure-devops azure-pipelines azure-pipelines-release-pipeline azure-pipelines-build-task


    【解决方案1】:

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

    Write-Host "##vso[task.setvariable variable=agent.jobstatus;]canceled"
    Write-Host "##vso[task.complete result=Canceled;]DONE"
    

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

    PS - 状态为“Succeeded”,但实际上 Build/Release 将被取消。

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

    【讨论】:

    • 我尝试了这两行,但得到了这个:##[warning]Overwriting readonly task variable 'agent.jobstatus'. This behavior will be disabled in the future. See https://github.com/microsoft/azure-pipelines-yaml/blob/master/design/readonly-variables.md for details.
    • 我也只尝试了第二行。但没有运气,构建仍在继续。
    • @ShaykiAbramczyk,这只会取消正在运行的任务,而不是整个管道吗?任务、作业和阶段是否有不同的命令?
    • @galsi 只尝试第二行:Write-Host "##vso[task.complete result=Canceled;]DONE"
    • 我再次尝试使用 2020 RC2 并仅使用此行任务被取消但构建继续
    猜你喜欢
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-18
    • 2020-09-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-03
    相关资源
    最近更新 更多