如何使用Azure Pipelines保持Admin与前端部署同步
独立仓库多模块协同自动化部署方案
这套方案完全基于现有已经跑通的CI/CD流水线改造,不需要调整现有代码仓库结构,不需要强制迁移Monorepo,开发者额外手动操作成本几乎为0,核心靠流水线卡点+元数据校验自动对齐版本,彻底解决C端/前端发版进度领先于Admin站点的适配问题。
核心落地步骤
- 第一步:先定极简的版本关联规则,零额外学习成本
所有涉及跨模块配合的需求,统一用需求单号作为全局特性ID(比如feat/PROJ-2345),要求所有仓库的MR/PR合入主干时,标题里必须带上对应的特性ID,CI环节加个10行代码就能实现的正则校验,没带ID的MR直接拦截不让合入——这个操作基本不增加开发负担,大部分团队本来就要求MR关联需求单号。
每个仓库的CI跑完构建后,自动从当前分支的MR记录里提取所有已合入的特性ID,和当前构建的版本号一起,作为元数据写到制品库对应构建包的标签里,不用额外搭建存储服务,主流制品库的自带功能都支持元数据标记。 - 第二步:加生产部署自动闸门,替换原来单仓库自主发生产的逻辑
先把所有仓库原来「主干构建完自动发生产」的逻辑,改成「主干构建+全量自动化测试通过后,只自动部署到预发环境」。
写个轻量的定时巡检脚本(不用搞复杂服务,配置成CI定时任务每10分钟跑一次就行),做这几个判断:- 拉取所有模块最新的、已通过预发验证的构建包,提取每个包包含的特性ID列表
- 逐个校验每个特性ID对应的所有关联模块是不是都已经出了预发验证通过的包(比如某特性涉及C端、后端、Admin三个模块,就核查这三个模块是不是都有包含这个特性ID的预发验证包)
- 如果某特性对应的模块没凑齐(比如C端已经合入代码过了预发,但Admin的适配代码还没合入、没出验证包),那所有包含这个特性的构建包一律卡着不触发生产部署
- 只有某一批特性对应的所有关联模块全部凑齐、全通过预发校验,才自动并行触发这批对应版本所有模块的生产部署
留兜底豁免通道:如果是不涉及跨模块依赖的线上热修复,开发只要在MR上打hotfix/skip-sync标签,CI识别到之后直接走单模块快速发版流程,不卡协同校验,不影响紧急问题修复效率。
- 第三步:加两层兜底,避免漏校验出问题
所有跨模块调用的接口默认做至少一个版本的向下兼容,前端、客户端、Admin端的新特性逻辑全部挂在配置中心的灰度开关后面,就算极端情况某一个模块意外提前发了生产,新特性默认是关闭状态,等所有模块部署完成后,脚本自动触发配置中心打开开关,用户完全感知不到差异。
每次协同部署完成后,自动往团队群推送上线通知,列清楚本次上线的特性列表、各模块对应的版本号,不用人工编写上线公告。
这套方案跑顺之后,开发不需要手动记录哪个模块要和哪个模块同步发版,不需要上线前拉群对齐版本,所有协同逻辑全靠流水线自动判断,不会再出现某端发版、配套Admin站点没跟上的问题。
内容的提问来源于stack exchange,提问作者user3067684
相关产品推荐
相关产品推荐

