4.4 分支命名规范

  • 版本开发分支命名规范:feature_产品版本号-需求说明

  • bug分支命名规范:hotfixes_负责人_bug说明

  • release branches(release_master):名称固定

  • dev:名称固定

  • master:名称固定

4.5 正常发布流程

  1. 根据产品需求,以master为源代码创建feature branches,命名规范为:feature_产品版本号-需求说明。

  2. feature branches开发自测完毕之后,合并到dev分支等待测试人员测试。

  3. 测试人员测试通过之后,通知分支开发负责人将需求发布到预发布环境。

  4. 开发人员将feature branches代码合并到release branches中,等待发布上线。

  5. 得到允许发布到线上的命令之后,将release branches代码合并到master分支,并打上tag记录。

  6. 将上线版本对应的feature branches删除。

4.6 bug修复流程

  1. 出现bug之后,以release branches为源码创建hotfixes分支,命名规范为hotfixes_负责人_bug说明。

  2. hotfixes分支开发自测通过之后,修改bug环境对应服务的分支指向,启动完毕之后通知测试人员开始测试。

  3. 测试人员测试通过之后,通过对应开发人员。

  4. 开发人员收到通知后,就可以将hotfixes分支代码合并到release branches和erp-dev分支中,并修改回bug环境对应服务的分支配置(默认为release分支)。

  5. release分支功能发布线上之后(bug修复的代码包含在里面),将对应的bug分支删除。

4.7 版本发布流程图

图片

五、demo流程演示

5.1 正常发布流程

以master分支为源头创建如下分支: 图片

现要求:

feature_v1_test1:开发时间为5天,从2021-04-06开始开发 预计发布日期2021-04-10

feature_v1_test2:开发时间为2天,从2021-04-06开始开发,预计发布日期2021-04-08

feature_v1_test3:开发时间为1天,从2021-04-06开始,预计发布日期2021-04-06

开始开发feature_v1_test1、feature_v1_test2、feature_v1_test3版本代码。 图片

开发完毕后,合并到dev中,等待测试人员测试。 图片图片

测试人员在dev环境中,将feature_v1_test3版本功能测试完毕后,开发人员将feature_v1_test3分支合并发布到release分支。

图片

release分支最后检测发现有bug,在release分支进行bug修复,修复完毕后合并到dev中 图片图片图片

release分支最后验收完毕,将release分支合并发布到master上线。 图片

发布master成功之后,将feature_v1_test3分支删除(本地和线上)。 图片

5.2 bug修复流程

以当前release分支为源头,创建一个hotfixes_linzhiqiang_login分支,用于修复线上bug。 图片

bug修复完毕之后,以hotfixes_linzhiqiang_login分支作为测试环境对应服务分支,测试通过之后,将hotfixes_linzhiqiang_login合并到release分支中,等待发布上线。

图片

release预发布测试bug是否正确被修复,测试通过则将release分支发布到master分支上线。

发布成功之后,则将bug分支删除,一般情况下,bug分支不需要发布到远程仓库中。

图片

5.3 注意事项

master每次发布都需要打个tag,对本次版本进行说明解释。

对应版本发布到线上之后,需要删除对应的feature branches分支代码。

六、总结

上面讲述了如何利用Git flow适配我们自己项目发布流程。但是当前版本发布流程还是会存在某些特殊问题。

6.1 feature branches当天多版本上线问题

如果feature branches分支中有两个版本需要当天发布,一个是中午,一个是下午,因为目前我们release分支只有一个分支,所以没办法兼容这种情况,遇到需要特殊处理。

6.2 bug时效高于release分支

如果release分支预计是当天晚上发布,但是当天早上有一个紧急的bug需要立即修复。这个时候就不能以release分支作为源头拉取bug分支了,必须以master为源头拉取分支。修复之后合并到master和release分支中。

6.3 feature branches合并到release分支冲突

因为我们是从feature branches直接合并到release分支的,过程中跳过dev分支,如果修改同一个文件,会大大增加冲突概率。

虽然特殊问题需要特殊处理,但是这种情况发生概率极低,就算发生了也有解决方案。所以总体来说当前的发布流程可以满足大多数情况。

-----------------------

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

最后

小编精心为大家准备了一手资料

以上Java高级架构资料、源码、笔记、视频。Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术

【附】架构书籍

  1. BAT面试的20道高频数据库问题解析
  2. Java面试宝典
  3. Netty实战
  4. 算法

BATJ面试要点及Java架构师进阶资料

]

以上Java高级架构资料、源码、笔记、视频。Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术

【附】架构书籍

  1. BAT面试的20道高频数据库问题解析
  2. Java面试宝典
  3. Netty实战
  4. 算法

[外链图片转存中…(img-GgefUa1o-1710398684789)]

BATJ面试要点及Java架构师进阶资料

[外链图片转存中…(img-a0DGOVLW-1710398684789)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐