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保证只有对应分支的定时任务触发时,才执行该阶段的部署流程。
二、经典发布管道变通方案
若你坚持使用界面配置的经典发布管道,可通过以下步骤实现:
新增定时触发器
进入发布管道「触发器」选项卡,点击「添加」创建新定时触发器:- 设置触发时间为每周二早间
- 指定触发分支为你的特定功能分支
- 在「阶段」选项中,选择仅触发UAT阶段
配置阶段执行条件
- 进入Dev阶段的「预部署条件」,添加分支过滤器:仅允许默认分支触发该阶段
- 进入UAT阶段的「预部署条件」,添加分支过滤器:仅允许目标功能分支触发该阶段
调整原有触发器
找到你已配置的Dev阶段定时触发器,在「阶段」选项中选择仅触发Dev阶段
通过以上设置,单个经典管道即可同时满足两个不同的定时部署需求,无需克隆管道。
内容的提问来源于stack exchange,提问作者Tscott
相关产品推荐
相关产品推荐

