简介
主干开发(trunk-based development TBD)。它的特点就是项目的功能开发工作主要在从master主分支上。
根据功能代码开发完毕后的项目发布,就出现了两种不同的发布模式:
主干开发-主干发布
主干开发-分支发布
- 主干开发-分支发布
主干开发-分支发布简介
主干开发-分支发布的特点就是项目的功能开发工作在master分支上,代码开发完毕后,经过功能测试没有问题后,从master主分支上切出一个release分支,作为项目代码版本发布的专用分支,而master分支还继续做项目下一个功能版本的开发工作。
如果线上代码出现bug,那么就在release分支上修复就可以了,修复后的代码最终要合并到主干上,只有非常严重的缺陷修复才会从master合并到release分支上。
因为主干代码一致处于可发布状态,所以更容易发布,而且,我们可以多个发布版本同时存在。
主干开发-分支发布效果
主干开发-分支发布原则
- 项目所有主要/核心功能代码的开发工作都在master分支上。
- 项目重要功能发布的时候,从master单独切出release分支,作为该功能的正式发布分支。
- 项目正常运行过程中出现功能(bug)问题,在相应的release分支进行bug的修复工作。
- 项目新功能在测试发布前,必须先合并上一个release分支代码。
- 缺陷(bug)修复,最终需要合并到主干,但有些特定修改,是不需要合并到主干的,合并准确的文件到主干。
- 对于不能合并到主干的情况,视情况再拉一个分支专门保存该内容。
优势:
主干开发的过程中,关于分支合并的工作量很少,所以整体比较简单
劣势:
新功能代码在master主干上开发,若主干代码达不到稳定的标准,不可以进行项目发布
使用场景:
比较适合传统软件产品的开发模式的项目、多产品线的项目
被广泛的应用于开源项目
强烈推荐、业界标准
- 主干开发-主干发布
主干开发-主干发布简介
主干开发-主干发布的特点就是项目的功能开发工作在master分支上,代码开发完毕后,经过功能测试没有问题后,在master主分支上打release标签作为项目代码版本进行发布。发布完毕后,master主分支还继续做项目下一个功能版本的开发工作。
如果线上代码出现bug,那么就在master分支上修复就可以了。
主干开发-主干发布效果
主干开发-主干发布原则:
- 项目所有主要/核心功能代码的开发工作都在master分支上,开发完毕后,在master分支上进行集成测试
。- 项目代码测试通过后,通过打标签的方式,以标签的方式进行代码发布。
- 项目正常运行过程中出现bug,在master分支进行bug的修复工作,修复代码通过测试后,打标签发布。
优势:
效率最高的一种项目开发方式。
项目代码发布前,需要进行主干集成测试,代码冲突易于提前发现
master主干代码安全稳定,每次测试通过后,都可以随时发布。
集成测试常见的配套措施:每日集成(编译部署测试),代码检查,单元/接口/界面自动化测试。
劣势:
新功能代码在master主干上开发,若主干代码达不到稳定的标准,不可以进行项目发布master上主干开发有先后,有未完成的功能但又需要发布时,需要能隐藏未完成部分。
为了避免以上情况,有三种缓解方法:- 功能拆分,小批量频繁发布;
- 后端先行,ui或功能入口发布;
- 功能开发,配置决定功能
- 生产案例
根据DevOps研究评估组织(DORA)连续多年对互联网公司的IT效能的调研,全球数千家公司参与了该项调查,其中关于代码配置管理的内容,值得我们思考。
该组织调查了基于主干开发在持续交付过程中所起到的作用,根据以往数年的经验,在高效能研发团队中,相比长期存在的特性分支,基于主线的小批量研发分支更加受到欢迎,行业中的很多先驱者倾向于把工作至于分支上。调查结果表明,以下开发实践可以显著帮助软件交付变得更加高效:
- 每天向主干合并一次代码
- 让分支生命周期尽量短(少于一天)
- 同一时间少于三条的活跃分支
- 小结
分支开发分类:主干开发-分支发布、主干开发-主干发布
分支发布流程:开发-测试-拉取-发布-循环
主干发布流程:开发(拉取)-测试-发布-循环

