Azure DevOps Pipelines 构建取消时如何执行指定任务
Azure DevOps Pipelines 取消时运行指定任务的实现方案
存在可直接落地的配置方式,同时支持手动取消、系统自动取消两种触发场景,核心通过流水线内置条件函数+预定义变量实现,具体操作如下:
实现原理
Azure DevOps 提供了内置条件函数 canceled(),当流水线被用户手动取消、或因超时/策略触发等原因被系统自动取消时,该函数返回布尔值true,可直接用于任务或作业的触发条件配置。
具体配置方式
1. 单任务级配置(同一个作业内触发)
如果需要执行的逻辑较少,可以直接在现有作业下新增专属步骤,给步骤添加condition: canceled()即可:
steps: # 你的常规构建步骤 - script: echo "执行正常构建逻辑" displayName: 常规构建 # 取消时触发的专属步骤 - script: echo "流水线已取消,执行资源清理、状态回滚等操作" displayName: 取消触发任务 condition: canceled() # 可选配置:避免该任务自身报错影响流水线最终状态标记 continueOnError: true
2. 作业级配置(独立作业触发)
如果取消后需要执行的逻辑较多,可以单独拆分为独立作业,配置依赖主作业+取消触发条件即可:
jobs: - job: MainBuild steps: - script: echo "执行主构建流程" displayName: 主构建作业 - job: CancelHandler # 依赖主构建作业,确保主作业被取消后才触发当前作业 dependsOn: MainBuild condition: canceled() steps: - script: echo "执行全局清理、通知推送等操作" displayName: 取消触发专属作业
补充说明
- 如果你需要在流水线无论成功、失败、取消的所有场景下都执行指定任务,可以将条件替换为
always() - 如果你需要在失败+取消的场景下都触发任务,可以将条件替换为
not(succeeded())
内容的提问来源于stack exchange,提问作者nunolima41
相关产品推荐
相关产品推荐

