Azure DevOps单发布流水线多分支对应不同环境定时部署如何配置
单条发布流水线实现方案
(注:以下操作基于主流DevOps平台的Release Pipeline能力,你已经配置完成的多分支构件过滤器可直接复用)

- 关闭整条发布流水线的全局持续部署触发和全局计划触发,所有触发规则全部在环境维度配置
- 分别为三个环境配置独立的计划触发规则:
- 环境1:添加每日11:30、15:00的定时计划,勾选仅当存在待部署的新变更时触发,确认绑定的
develop分支构件过滤器生效,保证仅develop分支有新构件生成时,到点才会触发部署 - 环境2:添加每日05:00、19:00的定时计划,勾选仅当存在待部署的新变更时触发,绑定
Master分支构件过滤器 - 环境3:添加每日06:00、14:00的定时计划,勾选仅当存在待部署的新变更时触发,绑定
release分支构件过滤器
- 环境1:添加每日11:30、15:00的定时计划,勾选仅当存在待部署的新变更时触发,确认绑定的
- 验证逻辑:分别向三个分支提交测试代码,CI生成对应构件后,到对应环境的计划时间确认仅对应环境触发部署,无新构件的环境不会执行空部署。
备选落地方案(适配多流水线批量管理场景)
如果所用平台不支持环境维度的独立计划触发,可选择以下方案:
- 脚本判断方案:在每个环境的部署任务前新增前置校验脚本,脚本同时判断两个条件:①当前时间是否属于该环境的部署窗口;②当前构件是否是该分支自上次部署后新生成的构件。两个条件同时满足才继续执行部署,否则直接跳过当前环境。该方案无额外依赖,可直接在现有流水线配置实现。
- 统一调度方案:针对你司数百条发布流水线的现状,搭建轻量集中式定时调度服务,统一拉取所有流水线的构件变更记录,到对应部署窗口时,调用发布流水线Open API触发对应环境的部署,仅传入对应分支的构件参数。该方案可实现所有流水线调度规则的批量配置、统一管理,长期运维成本远低于单条流水线单独配置。
- YAML配置方案:将发布流水线配置代码化,在YAML文件的环境层级单独配置各环境的触发规则、构件过滤器,配置可批量同步到同类流水线,避免页面重复配置的工作量。
内容的提问来源于stack exchange,提问作者Mahendra Movva
相关产品推荐
相关产品推荐

