Azure devops azure管道-如何基于条件任务结果中断/取消发布

Azure devops azure管道-如何基于条件任务结果中断/取消发布,azure-devops,azure-pipelines,azure-pipelines-release-pipeline,azure-pipelines-build-task,Azure Devops,Azure Pipelines,Azure Pipelines Release Pipeline,Azure Pipelines Build Task,我有一个由CI触发的发布管道,如果版本还不存在,我想推送一个nuget包的新版本 为此,我有一个简单的命令行任务,它检查nuget.org上是否存在该nuget,并将结果存储在环境变量中 然后,我可以为下一步设置条件,该条件仅在值变量为true时执行该步骤 这一切都很好,但是我想知道我如何简单地停止发布过程并跳过所有后续步骤,而不逐个设置它们的条件 此外,如何通过任务将生成状态设置为“已取消”?您可以通过PowerShell任务取消当前生成或发布: Write-Host "##vso[task.

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

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

然后,我可以为下一步设置条件,该条件仅在值变量为true时执行该步骤

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


此外,如何通过任务将生成状态设置为“已取消”?

您可以通过PowerShell任务取消当前生成或发布:

Write-Host "##vso[task.setvariable variable=agent.jobstatus;]canceled"
Write-Host "##vso[task.complete result=Canceled;]DONE"
因此,在发布管道中添加一个具有上述代码的Powershell任务,并在自定义条件下将其配置为仅在您不想上载NuGet时运行,在此任务之后,它之后的所有任务都将被取消

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


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

您可以使用PowerShell任务取消当前生成或发布:

Write-Host "##vso[task.setvariable variable=agent.jobstatus;]canceled"
Write-Host "##vso[task.complete result=Canceled;]DONE"
因此,在发布管道中添加一个具有上述代码的Powershell任务,并在自定义条件下将其配置为仅在您不想上载NuGet时运行,在此任务之后,它之后的所有任务都将被取消

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


如果您必须查看取消的状态,则需要使用Rest API,请检查PowerShell脚本。

我尝试了这两行,但得到以下结果:[警告]覆盖只读任务变量“agent.jobstatus”。将来将禁用此行为。看见https://github.com/microsoft/azure-pipelines-yaml/blob/master/design/readonly-variables.md 详细情况。我也只试了第二行。。但是运气不好,构建仍在继续。@Shaykibaramczyk,这只会取消正在运行的任务,而不是整个管道吗?任务、作业和阶段是否有不同的命令?@galsi仅尝试第二行:写入主机vso[task.complete result=cancelled;]DONEi使用2020 RC2重试,仅使用此行任务被取消,但构建继续我尝试了这两行,但得到以下结果:[警告]覆盖只读任务变量“agent.jobstatus”。将来将禁用此行为。看见https://github.com/microsoft/azure-pipelines-yaml/blob/master/design/readonly-variables.md 详细情况。我也只试了第二行。。但是运气不好,构建仍在继续。@Shaykibaramczyk,这只会取消正在运行的任务,而不是整个管道吗?任务、作业和阶段是否有不同的命令?@galsi仅尝试第二行:写入主机vso[task.complete result=cancelled;]DONEi使用2020 RC2重试,仅使用此行任务被取消,但构建继续