项目背景:现项目主要是做关于机器人的调度系统,涉及到web端、移动端、小程序及服务端和实体机器人端;
迭代背景:敏捷开发
记录方向:代码分支管理
记录时间:202102022
====================================================================================
项目迭代过程中记录一下代码分支管理策略;
====================================================================================
现项目的开发模式是敏捷开发,敏捷开发两周一个迭代版本,每个迭代产品经理有定义US-用户故事,然后开发测试人员等干系人员根据US来创建任务来完成这个US;根据现项目的开发模式
项目组的代码分支管理也基于传统的代码管理基础上进行了相关的调整;
代码分支管理策略如下图,直接从项目的文档中copy过来的:
现在项目的代码管理是严格按照该分支管理策略实施的;按照自己的理解整理的步骤;
1、分支类型
- master主干分支,稳定的代码分支
- sit、uat根据不同目的建立的不同环境的分支类型
- product线上环境
- sprint迭代分支,每个迭代开始由特定人员建立的分支
- task:每个开发人员领取到任务后从sprint分支拉取的分支
- 其他分支:基于不同的目的或者原因建立的临时分支
2、现项目分支管理步骤
2.1、master分支:主干分支,稳定的唯一的代码主干分支代码,作为所有分支的源头及闭环点;
2.2、sprint分支:每个迭代任务的源头及闭环点。迭代开始,特定人员从master拉取的迭代分支版本(开发环境dev服务器),该迭代下所有的task分支(开发环境dev本地)都来源于sprint分支;开发人员
task分支开发完成并自测通过后merge到sprint分支上;本次迭代所有的task开发完成并所有的task分支合并到sprint分支后,由特定人员(开发主管或者资历较高的开发人员)将sprint分支代码合并到SIT分支;
现项目CICD使用的是pipline、docker容器管理,在合并到SIT分支后,自动完成部署操作,完成本次迭代版本的提测;
2.3、task分支:迭代开始每个开发根据US领取到任务后,从sprint分支拉取代码到本地,开始task代码开发;开发完成并自测通过后合并到sprint分支上;
2.4、SIT分支:迭代版本提测即sprint迭代任务完成后将sprint分支合并到SIT分支;
2.5、UAT分支:SIT分支经过充分测试且符合测试准出规则后合并到UAT分支;
2.6、prod分支:线上环境,根据系统的复杂度及重要程度,可能环境的分支有所不同;有的项目可能在SIT完成测试后就合并到prod分支上了,有的项目还会有UAT、灰度环境、性能测试环境、自动化环境;
2.7、其他环境:特定目的的环境;
3、CICD
CICD持续集成继续部署
3.1、持续集成CI
项目使用的是pipline工具,开发每完成一个task后就会将代码合并到dev分支上,完成代码的集成;
3.1、持续交付CD
在完成相应的自测后,可以将代码发布到对应的环境上;开发主要是发布到开发环境进行自测。待整个sprint下的任务完成后,特定人员统一拉取代码发布到SIT环境;
发布到SIT及UAT环境有对应的审核人员,进行发布审核。避免未经过任何的自测就随意将代码发布到对应的环境上;