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

Azure DevOps发布管道:如何按计划部署特定阶段与分支

单个Azure DevOps发布管道内实现多阶段定时部署方案

一、YAML管道配置(官方原生支持)

直接通过YAML定义双定时触发器,配合阶段条件判断,实现不同分支、不同阶段的定时部署:

trigger: none # 禁用代码提交触发,仅保留定时触发

schedules:
  # Dev阶段:工作日早间部署默认分支
  - cron: '0 8 * * 1-5' # UTC时间早8点,周一至周五(根据本地时区调整)
    displayName: Dev工作日定时部署
    branches:
      include: [main] # 替换为你的默认分支
    always: true # 无代码变更也触发部署

  # UAT阶段:周二早间部署特定功能分支
  - cron: '0 8 * * 2' # UTC时间早8点,每周二
    displayName: UAT功能分支周二定时部署
    branches:
      include: [feature/your-target-branch] # 替换为你的特定功能分支
    always: true

stages:
  - stage: Deploy_Dev
    displayName: Dev阶段部署
    condition: eq(variables['Build.SourceBranch'], 'refs/heads/main')
    jobs:
      - job: Run_Dev_Deployment
        steps:
          # 这里添加你的Dev部署任务(如Azure App Service部署、数据库脚本执行等)
          - script: echo "执行Dev阶段部署逻辑"

  - stage: Deploy_UAT
    displayName: UAT阶段部署
    condition: eq(variables['Build.SourceBranch'], 'refs/heads/feature/your-target-branch')
    jobs:
      - job: Run_UAT_Deployment
        steps:
          # 这里添加你的UAT部署任务
          - script: echo "执行UAT阶段部署逻辑"

关键说明

  • 时区转换:Azure DevOps定时触发器默认使用UTC,需根据你的本地时区调整cron表达式。例如北京时间早8点对应UTC 0点,cron应写为0 0 * * 1-5。
  • always: true确保到时间自动触发,不受代码提交状态影响。
  • 阶段的condition保证只有对应分支的定时任务触发时,才执行该阶段的部署流程。

二、经典发布管道变通方案

若你坚持使用界面配置的经典发布管道,可通过以下步骤实现:

  1. 新增定时触发器
    进入发布管道「触发器」选项卡,点击「添加」创建新定时触发器:

    • 设置触发时间为每周二早间
    • 指定触发分支为你的特定功能分支
    • 在「阶段」选项中,选择仅触发UAT阶段
  2. 配置阶段执行条件

    • 进入Dev阶段的「预部署条件」,添加分支过滤器:仅允许默认分支触发该阶段
    • 进入UAT阶段的「预部署条件」,添加分支过滤器:仅允许目标功能分支触发该阶段
  3. 调整原有触发器
    找到你已配置的Dev阶段定时触发器,在「阶段」选项中选择仅触发Dev阶段

通过以上设置,单个经典管道即可同时满足两个不同的定时部署需求,无需克隆管道。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 03:06:16