项目发布流程
- 功能开发
- 提交测试
- 提交预发布测试
- 提交生产测试
- 完成
分支定义:
按存在周期:
- 长期分支:存在整个项目开发过程中,
master
和develop
- 短期分支:存在一段时间,(上个版本完成到下个版本完成 等)
test
和release
- 临时分支:功能分支,(用于开发的具体功能的分支 功能完成后删除)
feature
- 及时分支:修复分支,(用于修复 bug 完成后立即删除)
bugfix
和hotfix
- 长期分支:存在整个项目开发过程中,
按功能用途:
- 功能性分支:
- 生产分支:
master
- 基础开发分支:
develop
- 测试分支:
test
- 预发分支:
release
- 开发分支(编码分支):
- 功能分支:
feature
- 修复分支:
bugfix
和hotfix
分支合并及提交策略:
- 功能性分支不允许直接提交代码,只允许合并和解决冲突提交。
- 所有功能开发分支从基础开发分支检出
- 合并需由开发分支向功能分支合并
- 合并由下游分支向上游分支合并
开发流程:
- 新功能开发:从基础开发分支
develop
检出feature/xxx
- 功能自测完成:合并
feature/xxx
到test
,提交测试- 测试通过:等待合并到
develop
进入下一环节 - 测试未通过:在
feature/xxx
修复问题 合并到test
提交测试 - 注意:不建议从
test
检出bugfix
修复问题;禁止在test
上修改并提交;
- 测试通过:等待合并到
- 测试完成,进入下一环境(预发布):
- 合并待发布的功能分支
feature/xxx
到develop
分支,并删除该功能分支,自此该功能表示已完成(也可以从develop
分支检出release
分支作为待发布分支,合并功能分支到待发布分支) - 合并所有待发布功能到待发布分支
develop
(release
),提交预发布测试 - 测试通过:等待发布生产。
- 测试未通过:从待发布分支
develop
检出bugfix/xxx
进行修复,代码开发完成后合并修复分支bugfix/xxx
到test
分支测试。
- 合并待发布的功能分支
- 预发布测试完成,进入下一环节(生产):
- 合并待发布分支
develop
到 生产分支master
,发布上线。并打tag
标签vx.x.x
- 合并待发布分支
- 生产测试未通过或线上 bug:
- 从生产分支
master
检出热修复分支hotfix/x.x.x
,进行修复,开发完成后合并代码到test
,提交测试: - 测试通过,合并热修复分支
hotfix/x.x.x
到待发布分支develop
,提交测试:- 测试通过,合并热修复分支
hotfix/x.x.x
到生产分支master
,提交测试: - 测试通过,删除热修复分支
hotfix/x.x.x
,并打tag
标签vx.x.x
- 测试不通过,继续修复
- 测试不通过,继续修复
- 测试通过,合并热修复分支
- 测试不通过,继续修复
- 从生产分支
分支权限及 review:
master
:项目负责人,保证发布生产时代码合并及 reviewdevelop
:开发负责人,合并功能分支,及修复分支时的 reviewtest
:所有人,
提交信息:
- 在合并到待发布分支之前,可以对自己的功能分支进行提交历史整理。
- 信息撰写:type 代表某次提交的类型,比如是修复一个 bug 还是增加一个新的 feature。所有的 type 类型如下:
- feat: 新增 feature
- fix: 修复 bug
- docs: 仅仅修改了文档,比如 README, CHANGELOG, CONTRIBUTE 等等
- style: 仅仅修改了空格、格式缩进、都好等等,不改变代码逻辑
- refactor: 代码重构,没有加新功能或者修复 bug
- perf: 优化相关,比如提升性能、体验
- test: 测试用例,包括单元测试、集成测试等
- chore: 改变构建流程、或者增加依赖库、工具等
- revert: 回滚到上一个版本
参考: Angular Commit Message Conventions
分支存在周期
master
,develop
:一直存在整个项目开发周期。test
:上个版本完成到这个版本完成(或者任一生产版本完成可删除,从develop
重新检出新的test
分支)feature
:从功能开发到合并进待发布分支develop
,删除功能分支。bugfix
,hotfix
:修复开始到各阶段测试通过修复完成,删除修复分支