代码分支管理及发布流程 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分支,准备上生产环境测试

部署生产环境

当预发布环境测试通过,测试人员通知PM发布生产环境。此时PM需要做以下事情:

  • 给测试通过的pre分支打tag,格式如下:v1.0.0
    • 每经历一次hotfix发布,小版本号加一
    • 每经历一次小产品改动发布,次版本号加一
    • 产品大改版,主版本号加一
  • 合并pre分支到master
  • 如果是hotfix,合并pre分支到devel
  • 推送代码和tag到远端
  • 部署生产环境
  • 提交生产环境测试
  • 生产环境测试通过后,通知项目组此次发布成功

流程图

devel分支提测及hotfix提测流程,以及产品发布流程如下:

开发流程管理