分支模型



主干分支模型如上图,

项目有个主干分支和若干个release分支。

主干分支:

开发人员在主干分支上(通常情况下是master分支)push代码,push代码签需要在本地做rebase并且合并。 

如果release分支发现bug,开发人员也在主干分支上直接提交此bug的修复。

Release分支:

每一个版本发布(需要部署到生产环境或者发布给客户)会产生一个Release分支。

Release分支上发现bug后,开发人员修改bug提交到主干分支,CI通过后,Cherry pick到release分支。

主干分支上的CI pipeline

push到主干分之后,触发主干分支的CI pipeline,此处的CI pipeline包括:代码质量检查, 代码静态检查,单元测试,编译打包,接口测试,集成测试,动态安全扫描等。 

CI如果失败,则通知相关的开发人员,开发人员修改后,push到主干触发新的CI pipeline。

CI如果成功, 则把编译好的二进制包打上集成标签(Snapshot-commit号),发布到二进制仓库。

在此模型中, 如果提交的非长频繁,则后面的提交的ci pipeline会取消掉前面的ci pipeline, 知道某个提交间隔有足够多的实践完成所有持续集成工作。

Release分支上的CD pipeline

需要发布前,release经理在某个CI成功的节点上创建release分支。

Release分支创建时或者以后Cherry pick后, 执行release分支上的持续部署pipeline:升级之前的二进制包为生产环境,部署到生产环境。