You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps发布流水线:取消发布后如何确保指定Agent Job仍运行

Azure DevOps发布流水线取消时确保清理VM的Job运行

你遇到的核心问题是:当发布流水线被主动取消时,Azure DevOps默认会终止所有未启动的后续Job,哪怕你给Job设置了True的自定义条件也没用——因为流水线的取消状态会直接阻止后续Job的启动。

下面是几种可靠的解决方式:

方法1:阶段级配置+Job条件双保险

  1. 找到包含删除VM Job的阶段,进入它的附加选项:
    • 勾选「即使先前阶段失败也运行」
    • 把阶段的自定义条件设为:succeeded() || failed() || canceled(),确保流水线无论成功、失败还是取消,该阶段都会触发
  2. 给删除VM的Job设置自定义条件为always(),这样阶段内不管其他Job状态如何,这个清理Job都会执行

方法2:用Post-job任务替代独立Job(更简洁)

直接把删除VM的脚本/操作,添加为整个阶段的完成后任务(Post-job tasks):

  • 在阶段的任务列表底部,点击「添加任务」→「添加完成后任务」
  • 把清理VM的任务放在这里,Post-job任务默认会在阶段结束时自动运行——不管阶段是成功、失败,还是中途被取消,只要阶段启动过,清理操作就会执行
    这种方式不需要额外配置复杂的条件,是清理类操作的最优解

方法3:独立清理流水线(备选复杂场景)

如果上述方法不满足你的需求,可以:

  1. 在主流水线里创建一个变量(比如NeedCleanup),成功创建VM后将其设为true,并记录VM的标识信息
  2. 创建一个专门的「清理VM流水线」,接收VM标识作为参数执行删除操作
  3. 配置Azure DevOps的Webhook或者用API监听主流水线的取消事件,当主流水线被取消且NeedCleanup为true时,自动触发清理流水线

测试时可以故意在Job1执行过程中取消发布,验证清理操作是否正常触发。

内容的提问来源于stack exchange,提问作者Minyi Chen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 22:35:22