技术编程字节研发设施下的 Git 工作流( 三 )
本文插图
周期发版:双主干
? 周期发版:三主干
本文插图
周期发版:三主干
对比“双主干”和“单主干” ,
有联系:
处于 MR 状态的迭代分支 ≈≈ 研发主干 Dev
单主干 Master ≈≈ 发布主干 Master
也有区别:
单主干的“研发分支”不存在一个固定的测试环境(相较于双主干 dev 分支)
多个 feature 同时发测试环境时需要组合成新分支 , 管理不便
单主干迭代分支在 MR /非 MR 状态下的 CI 流水线有差异单主干实践前端微服务管理平台
字节前端微服务平台属于成熟业务 , 只需做少量 feature/fix 开发 , 在工作流上采用单主干模式 。
本文插图
本地测试后 , 不再经过功能测试环境测试 。 发起 Merge Request , CR 通过合码后 , 上测试基准环境进行测试 , 如发现问题 , 回滚 , 进入下一轮 CR 。
虽然小修小改影响风险小 , 但流程缺乏进入功能测试环境的流程 , 还是存在隐患 , 有可能影响测试环境的业务方使用 , 不是很好的实践 。
【技术编程字节研发设施下的 Git 工作流】单主干只适应于业务规模小 , 成熟度高无大改动的项目 。 但无论业务规模如何 , 执行上线发布流程前 , 都必须先经过线下环境验证 。 双主干实践私有云平台
云平台的 Git 工作流是由繁入简的过程 。 最开始为每个部署环境设定了一个部署分支 。 feature 分支的 commit 点需要和三个环境的部署分支发生 merge , 起不到串联测试的目的 。
本文插图
经过改进后 , 采用标准的 Trunk-based Flow , 仍能满足 online/sandbox/boe 三个环境的部署要求 。
本文插图
云平台参与业务方有上百个(类似阿里云平台) , 虽然图中仅展示了三个环境 , 但实际上 5 大环境的使用都融入了日常开发中 。 某业务中台
某业务中台的 Git 工作流重点阐述了同一个项目多人协作开发时会遇到的问题:
多个 feature 各自独立提测, 临近上线合码时有较多冲突, 可能导致线上 bug
提测前和提测中, 如果 master 更新了, 可能没有及时同步下来, 上线前合入 master 可能会导致冲突或 bug
在流程设计上 , master 作为发布分支 , release-* 为提测分支 , 结合了单主干的便捷(hotfix 直接和 master 交互)和双主干对 feature 的管理
和 Trunk-based Flow 刚好相反 , 主分支是发布分支 , 提测分支是短期的
另一个比较有特点的是 , 在 release 测试过程中 , 发现某个 feature 的 bug ,直接从 release 分支 checkout 出来进行修复 , 并再次合入 release
本文插图
Jupiter 工作流规范
Jupiter 是字节 Web 开发引擎 , 覆盖 Web、组件库、BFF、SSR 等前端开发领域 。 Jupiter 推荐 Trunk-based Flow 类似的 Flow , 并从 CI/CD 角度出发 , 在开发新需求、hotfix 等时机给出 Git 操作建议 。
有重叠人员参与的各项目之间有一致的流程和模式 , 避免增加认知负担 , 避免同一个人在不同项目之间切换时混淆和迷惑 , 也能集中力量做实践和改进 , 共享经验和基础建设 。
推荐阅读
- 前瞻网|华大推15分钟新冠快速检测盒,前瞻医疗器械产业全球周报第47期:苹果被起诉窃取血氧监测专利技术
- 极酷数码客|价格很有优势,雷军刚发布行业领先技术!小米新机紧接被曝光
- 麦田军事观察|印度抨击法国公司拒绝转让核心技术啥意义?不知花钱买不来现代化
- 沈潮汐|扬言基建技术超越中国,2天后愣住了,印度3天时间搭好一座桥
- 量子科技,爆发!有项关键技术中国已领先世界
- 歼-20|又一国看上国产战机,关键部位采用歼-20技术,一口气要采购40架
- 一品汽车|“备胎上位”道阻且长,氢燃料电池技术储备不足
- 追梦格林|追梦格林谈球场心态:心态就是一项技术,我给不了杜兰特我的心态
- awesome科技|苹果12都没办法,小米宣布发布80W无线充电!这技术可真绝
- CECBC区块链专委会|第19届亚运会门票采用区块链技术防伪
