技术编程|字节研发设施下的 Git 工作流( 四 )
支持 monorepo 。 不同方向不同人参与的项目 , 可能会共用一个仓库 , 方便复用代码和基础设施 。 所以仓库中不同项目可能有不一样的上线节奏和上线需求 。
鼓励持续集成(CI) , 集成不等同于部署 , 发 MR 集成代码的时候不用有压力 , 不会在不知情的情况下被上线 。 也鼓励持续部署(CD) , 部署不等于发布 , 不能发布的代码 , 在正式上线前有机会关掉 。
上线过程必须是固定、重复、能统一改进 , 能逐步增加自动化的 , 不能每次上线时重新、临时规划或修改上线方法 , 增加负担和成本 。
CI 是 CD 的前提 , 没经过 CI 的修改不能进入 CD 环节 。
不能有任何修改不经过 staging(预发布 , 尽可能跟线上一致)测试 , 直接上线 。
CI 和 CD 的历史记录要绝对可靠、可追溯 , 只能增加 , 不能减少和修改 。
尽可能减少手动操作环节 , 避免在特定的个人机器上做上线操作 。 三主干实践亿级 App
App 发版应该是目前为止最为复杂的分支管理场景了 。 客户端安装包一旦下发到渠道被用户下载 , 如果无法通过热更新修复 , 将严重影响 App 用户留存 。App 发版具有更规范的发版规律 , Feature Toggle 必不可少 , 当我们觉得 CR , CI/CD 麻烦时 , 对比开发上线一个影响上亿用户的 App feature , 是不是感觉做 Web 的 CI/CD 简单多了?
本文插图
总结
本文尽可能从多角度阐述 Git 工作流的使用姿势 , 希望对大家有帮助 。 Git 工作流是为了上线有保障 , 上线过程中充分测试必不可少 , 良好的 Git 工作流能保障测试是渐进且可靠的 。 环境管理和 Git 工作流结合在头条内部也形成了很多规范 , 包括「环境部署」、「流量调度」、「连通性测试」等使用规范;「限定场景允许」、「暂时场景允许」、「限定流程允许」等环境约束规范 。 再结合 CI/CD , 我们就可以全链路保障业务的快速迭代、安全上线 。 参考资料
Trunk-based Development vs. Git Flow (https://www.toptal.com/software/trunk-based-development-git-flow)
Please stop recommending Git Flow!(https://georgestocker.com/2020/03/04/please-stop-recommending-git-flow/)
Understanding the GitHub flow(https://guides.github.com/introduction/flow/index.html)
Introduction to GitLab Flow(https://docs.gitlab.com/ee/topics/gitlab_flow.html)
https://cn.trunkbaseddevelopment.com
在阿里 , 我们如何管理代码分支? (https://developer.aliyun.com/article/573549)
谷歌的代码管理 (http://www.ruanyifeng.com/blog/2016/07/google-monolithic-source-repository.html)
欢迎关注「字节前端」
简历投递联系邮箱「tech@bytedance.com」
推荐阅读
- 行业互联网|华为 | 车载以太网物理层及TSN发展现状 与技术趋势
- 技术编程|什么是Plesk虚拟主机控制面板?
- 电池技术|法国发明出世界最快的电极:可将锂电池的密度提高3倍
- 技术编程|人工智能在大视频运维中如何实现CDN硬盘故障预测?
- 电池技术|关于惠州赣锋建设高端聚合物锂电池研发及生产基地建设,赣锋锂业要干大事
- |加速冲刺世界级技术领先地位,大族机器人获1.65亿元A轮融资
- 解码器|苹果 ProRes 视频编解码器获 2020 技术工程艾美奖
- 数据|徐叶润:另类数据技术是驱动资管科技的核心
- 中年|《经济学人》封面文章解析蚂蚁集团:数字技术的崛起代表了金融的未来
- 行业互联网|北科院轻工所技术入选中关村论坛技术交易大会“产业创新领先技术百强项目榜单”