分支模型



主干分支

Master :随时可供在生产环境中部署的代码,建议伴有标签(TAG

Develop:每天需要提交和合并的代码,功能逐渐完成的代码开发分支

辅助分支

Feature:新功能分支,辅助develop分支。主要用于实验性且效果不好的代码变更。或者用于项目组新成员接手开发新功能等。分支可以合并到develop分支,或者直接丢弃。

命名规范:feature-*


Release分支:当基本版本完成,准备提交上线时的分支,本分支可以做小BUG的修复。成功通过测试后,必须合并到Master分支,并记录标签(Tag),如果有BUGfix,则还需合并到Develop分支。此版本的作用是项目二期可以继续在develop分支开始开发。

命名规范:release-*


Hotfix分支: 对于线上版本(Master分支)的BUG修改的辅助分支,必须合并回master分支和develop分支。

命名惯例:hotfix-*

Feature分支上的持续集成

开发者在feature分支上push代码后执行, 包括:代码质量检查, 代码静态扫描,单元测试,程序编译。

如果CI失败,feature分支上的相关程序员需要修复相关的问题,如果上次提交的pipeline没有执行完成,开发者提交了新的代码,则老的pipeline停止, 新的pipeline包括了上次的所有代码提交的持续集成检查。

如果CI成功,则可以发次MR进行代码review。 代码review的时候,review人员可以参考Feature分支上的CI结果。

Develop分支上的持续集成

CI成功后, Feature分支被合并到Develop分支,develop分支上的每个节点(merge request合并节点)会触发一个持续集成pipeline,包括:单元测试,程序编译,接口测试,动态安全扫描,集成测试,打包

如果CI失败,则所有人应该分析错误, 相关人员应该拉取一个修复分支(相当于feature分支),进行修复并提交代码,合并到develop分支,直到develop分支ci变绿,变绿之前,所有人不能合并其他任何feature分支。

如果CI成功,则相关的节点会有相关的发布包被push到二进制仓库,并且打上 “snapshot-commit号“标签。

CI成功后,相关的二进制包会被部署到本sprint的集成测试环境,保证本迭代的测试环境是最新的可执行的代码。

Release/Hotfix分支上的持续发布

在Release分支创建后,CD pipeline把当前的commit对应的编译包升级为测试包,打上 “test-版本号-commit号", 并部署到验证测试环境。

用户验证如果发现bug,则release分支上创建feature分支(针对bug), 修复bug,提交(触发Feature分支CI), MR合并到Developer(触发develop分支CI),Cherry pick到Release分支, 触发Release分支CD。 当前的commit对应的编译包升级为测试包,打上 “test-版本号-commit号", 并部署到验证测试环境。

如果Release分支测试成功(这里默认需要手动测试),release分支需要通过MR review,合并到Master分支并打版本Tag。Review需要参考测试提交的测试报告。

Master分支上的持续发布

Master分支合并成功后,CD pipeline 把当前的commit号对应的包的package升级为生产环境,并发布到生产环境。