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

Azure DevOps Pipelines:如何为最新发布分支设置定时运行?

问题背景

当前使用的定时触发器配置会触发所有releases/*分支的定时任务,不想每次发布后手动修改YAML指定具体版本,希望找到便捷方式仅让最新发布分支运行定时流水线。现有配置如下:

schedules:
- cron: "0 4 * * *"
  displayName: Daily Production Copy
  branches:
    include:
    - releases/*
  always: true

关于微软示例中的releases/ancient/*配置

这个配置的作用是排除不再维护的旧发布分支:把已停止维护的旧分支重命名为releases/ancient/xxx格式,就能让定时任务只针对未被排除的活跃releases/*分支运行。但Azure DevOps没有直接移动分支到“文件夹”的功能,本质是通过手动重命名分支实现,对团队分支规范要求较高。

可行解决方案

方法1:用分支标签筛选(推荐)

给最新的发布分支打上特定标签(比如latest-release),然后在定时触发器中仅包含带该标签的分支:

schedules:
- cron: "0 4 * * *"
  displayName: Daily Production Copy
  branches:
    include:
    - refs/tags/latest-release
  always: true

每次发布后,只需移除旧分支的标签,给新发布分支打上latest-release标签即可,无需修改YAML文件。

方法2:利用分支命名规范自动筛选

如果团队发布分支遵循版本号命名规则(比如releases/v2.1.0、releases/v2.0.1),可结合脚本实现动态筛选:
保持原有定时触发器包含所有releases/*分支,在流水线第一步添加判断脚本,仅当当前分支是最新版本时才继续执行后续任务:

# PowerShell示例:自动获取最新版本的发布分支并校验
$branches = git branch -r | Where-Object { $_ -match 'origin/releases/v\d+\.\d+\.\d+' } | ForEach-Object { $_ -replace 'origin/','' }
$sortedBranches = $branches | Sort-Object { [version]($_.Split('/')[-1].Replace('v','')) } -Descending
$latestBranch = $sortedBranches[0]

if ($env:BUILD_SOURCEBRANCHNAME -ne $latestBranch.Split('/')[-1]) {
    Write-Host "当前分支不是最新发布分支,终止流水线"
    exit 1
}

这样所有releases/*分支都会触发定时任务,但只有最新分支会完成后续流程,其余分支直接终止。

方法3:变量组+阶段条件

通过变量组管理最新分支名,避免修改YAML:

  1. 创建变量组(比如ReleaseVariables),添加LatestReleaseBranch变量,值设为最新发布分支名(如releases/v2.1.0)。
  2. 在流水线中引用变量组,并给定时任务阶段添加分支匹配条件:
variables:
- group: ReleaseVariables

schedules:
- cron: "0 4 * * *"
  displayName: Daily Production Copy
  branches:
    include:
    - releases/*
  always: true

stages:
- stage: DailyCopy
  condition: eq(variables['BUILD_SOURCEBRANCH'], 'refs/heads/' + variables['LatestReleaseBranch'])
  jobs:
  - job: RunCopyJob
    steps:
    - script: echo "执行生产环境复制任务"

每次发布后,仅需在变量组中更新LatestReleaseBranch的值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:25:28