代码分支管理及发布流程 Code Branch Manage and Publish Work Flow
代码分支
之前在阿里,公司内部采用SVN作为代码管理工具。自从创业后,我一直在使用GIT作为代码管理工具。
项目常驻分支:
- master
- pre
- devel
- local
分支状态:
- 冻结状态:不允许代码提交
- 活跃状态:允许代码提交
master
git仓库新建,通过git clone
被clone到本地后,会默认有一个master分支,我们称之为主干分支。主干分支要保存和生产环境一致的代码。该分支在生产环境发布之后,就处于冻结状态
。
pre
每次发布之前,将测试好的devel代码合并到pre分支,再通过部署pre分支代码提交预发布测试。pre分支保存和预发布环境一致的代码。该分支在预发布环境发布之后,就处于冻结状态
。
devel
devel分支保存开发人员自测完毕之后的代码。该分支一直是活跃状态
,并且一直允许提交的。
local
local是一个本地分支
,不允许push到远端。每个开发人员各自有一个属于自己的local分支,工程师自己的新开发需求都在该分支完成。但开发并且自测完毕后,允许提交到devel,再由devel推送到远端。该分支一直是活跃状态
,并且一直允许提交的。
流程图
local和devel开发过程中,分支合并及提交规则如下:
环境
项目代码运行环境:
- 生产环境:部署master分支
- 预发布环境:部署pre分支
- 测试环境:部署devel分支
- 开发环境:开发工程师每人有一个,部署local分支
部署流程
部署测试环境
我的几个项目组采用敏捷开发,backlog管理需求,通过sprint控制发布节奏,每两周发布一个可用版本。所以在每个发布点的前两到三天,我们会提交测试。
- 平时
- 开发人员local分支自测
- 合并到devel分支
- 提测点(发布点前两到三天)
- 部署devel分支到测试环境
- 提交测试工程师测试
部署预发布环境
- devel分支提测
- 测试人员在devel分支提测成功后,由PM负责将devel合并到pre分支,并且部署预发布环境,提交预发布测试。
- hotfix提测
- 当生产环境发现一个bug,需要立即修复,则启动hotfix流程:
- 先在pre上修复代码,并自测
- 自测成功后,merge到devel分支,提交测试环境测试
- 测试环境测试成功后,push到pre远端,提交预发布环境测试
- 预发布环境测试成功后,merge到master分支,准备上生产环境测试
- 当生产环境发现一个bug,需要立即修复,则启动hotfix流程:
部署生产环境
当预发布环境测试通过,测试人员通知PM发布生产环境。此时PM需要做以下事情:
- 给测试通过的pre分支打tag,格式如下:
v1.0.0
- 每经历一次hotfix发布,小版本号加一
- 每经历一次小产品改动发布,次版本号加一
- 产品大改版,主版本号加一
- 合并pre分支到master
- 如果是hotfix,合并pre分支到devel
- 推送代码和tag到远端
- 部署生产环境
- 提交生产环境测试
- 生产环境测试通过后,通知项目组此次发布成功
流程图
devel分支提测及hotfix提测流程,以及产品发布流程如下: