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

如何让Azure Pipeline中的模板在流水线取消时仍运行?

问题原因

你把模板任务和主构建任务放在了同一个Job里,当流水线被取消时,整个Job会立刻终止,后续步骤(包括模板任务)根本没机会执行。condition: always()只能在Job没被终止的场景下生效(比如Job内前面步骤失败但Job还在运行),覆盖不了Job被取消的情况。

解决方案

要让模板任务在流水线被取消时也能运行,得把它放到独立的Job中,配置好依赖关系和Job级别的条件,具体操作如下:

1. 修改流水线主YAML

将模板任务移到新的独立Job,同时给主Job添加取消超时配置:

jobs:
    - job: BuildJob
      displayName: "Build Something"
      timeoutInMinutes: 240
      pool:
          name: myPool
      # 关键:设置取消超时,让主Job被取消时,系统有时间触发依赖Job
      cancelationTimeoutInMinutes: 1
      steps:
          - checkout: self
            fetchDepth: 1

          - task: AzureKeyVault@2
            displayName: "Initialize AzureVault"
            inputs:
                azureSubscription: "Azure Service Connection"
                KeyVaultName: "KV"
                SecretsFilter: "*"

          - task: PowerShell@2
            displayName: "Create directory"
            inputs:
                targetType: "inline"
                pwsh: true
                script: |
                    $null = New-Item -ItemType Directory -Path 'C:\Download' -Force

          # 其他属于该Job的任务
          # 示例:在这里取消流水线

    # 新增独立Job,执行数据库操作模板
    - job: DbOperationJob
      displayName: "Do Something In DB"
      pool:
          name: myPool
      # 依赖主Job,确保主Job完成/取消后再执行
      dependsOn: BuildJob
      # Job级条件:无论主Job成功、失败还是被取消,都运行此Job
      condition: always()
      steps:
          - template: templates\doSomethingInDb.yml
            parameters:
                configs: $(Configs)

2. 确保模板内任务的条件设置不变

保留模板doSomethingInDb.yml中的condition: always(),作为双重保障:

# templates\doSomethingInDb.yml
parameters:
    - name: configs
      type: string

steps:
    - task: [你的数据库任务]@[版本号]
      displayName: "执行数据库操作"
      condition: always()
      inputs:
          configs: ${{ parameters.configs }}

关键配置说明

  • cancelationTimeoutInMinutes: 1:主Job被取消时,系统不会立刻终止,会等待1分钟,让依赖的独立Job有机会启动。
  • 独立Job的condition: always():确保不管主Job是什么状态(成功、失败、取消),这个Job都会运行。
  • 模板任务的condition: always():保证即使独立Job内后续添加了其他步骤,该数据库任务也能无条件执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 00:37:03