分支模式

什么是分支模式

Flow对分支模式提供了强有力的支持:用户可以只需要关心集成和发布哪些 feature 分支,而对 release 分支创建和管理、分支合并等一系列工作,可以托付给 Flow 完成。

本节内容详细介绍分支模式下,各(类)分支的使用方式。

master 代表最新发布版本

一般情况下, master 分支代表最新发布版本。当需要最新发布版本的内容时,直接取分支末端即可。

不论其他哪类分支,都建议一般从 master 分支创建,并且经常从 master 分支合并,以便跟上“潮流”,减少将来集成时的各种问题,比如代码合并冲突。

每当软件正式发布前,系统会确保它基于 master 最新。

在各 feature 分支上开发

  • 一条 feature 分支(又称变更分支、开发分支),通常用来承载一个缺陷的修复,或者一个需求(如果不是很大的话)的开发,或者任务分解后一个任务的开发。

  • 一般来讲,基于 master 分支最新版本创建 feature 分支。然后在 feature 分支上开发、测试,直到这个 feature 功能完成,质量 OK,准备好去集成和发布。

release 分支上的集成

  • release 分支用于集成和发布。基于 master 分支最新版本创建一条 release 分支,然后把想要集成的各条feature分支合并到这条release分支,进行部署和测试工作。

  • 如果有新的 feature 分支要加入本次集成,那就把它也合并进这条 release 分支,然后再次部署并测试。

  • 如果测试发现问题,就到 feature 分支上修复,然后把它再次合并到 release 分支,把修复带到 release 分支。

  • 当然如果一个 feature 的问题太多太大,那干脆就放弃它。也就是说,新建一条 release 分支,把其他 feature 分支都合并过去,唯独不再合并这条 feature 分支。

  • 就像 master 分支一样,release 分支也是由系统自动管理的。使用者不要直接在上面改代码,代码修改请总是在 feature 分支完成。

release 分支上的发布上线

  • 当 release 分支上的质量足够好,本次想上线的功能也都具备之后,就要考虑发布上线的问题啦。如前面讲的,发布上线前,会确保它基于基础分支(常见的如 master )最新。而发布后会把 release 分支合并回 master,让 master 代表最新发布版本。

  • 以上几节介绍的内容,见下图:

    分支模式-fea-rel

多个环境/流程时

  • 假定要想集成发布上线,要经过日常测试环境上的测试这个流程,还要经过预发环境上的测试这个流程,那么两个流程用一条 release 分支就有些不合适。因为两个流程可能同时在测不同的 feature 分支集合。

  • 分支模式用这个办法避免这个问题:每一个测试环境,也就是每个流程,关联它自己的 release 分支。日常测试、预发测试这两个环境(也就是两个流程),分别关联两条 release 分支。这样就不会相互影响。推而广之,为正式运行环境,也对应一条release分支。也就是说,每个环境都有对应的 release 分支。

  • 当把集成成果从一个环境传递到下一个环境时,就是把一个环境下已合并到一起的 feature 分支,再往另一个环境对应的 release 分支上合并一遍……这么做有点儿笨。系统实际的做法是,基于 master 分支创建另一个环境对应的 release 分支,然后把前一个环境对应的 release 分支合并到新的 release 分支上。

  • 本节介绍的内容,对应下图:

    分支模式-rels

  • 以上就是关于分支模式这种研发模式的原理性介绍,以下我们看一下如何在流水线中使用分支模式。

如何在流水线中使用分支模式

编排流水线

流水线的新建方式其他流水线相同,当新建流水线时选择了「开启分支模式」,就会自动创建包含【分支管理器】的分支模式流水线。

  1. 新建流水线。

  2. 添加代码源,以使用「云效Codeup」为例,选择代码库,选择「开启分支模式」,然后点击「添加」。Group@1x

  3. 添加完成后,在「流程配置」页面可以看到第一个阶段「分支管理器」。在分支管理器中设置基础分支,基础分支默认是 master。基础分支是发布分支的创建来源。发布分支从基础分支创建,然后合并运行分支。「分支管理器」只能是在第一个阶段配置,且在这个阶段不能配置并行任务。Group@1x

运行流水线

流水线配置完成后,就可以开始运行了。

  1. 在右上方选择保存并运行,在运行配置中,添加运行分支。Group@1x (1)

  2. 进入添加运行分支对话框,选择运行分支。若在代码源选择的其他代码库,这里输入运行分支。可以添加多个分支。Group@1x

  3. 运行分支添加完成后,就可以开始运行。在「分支管理器」卡片中可以查看执行结果及日志。若合并冲突,需要根据提示解决冲突后继续运行。

  4. 通过「源」的「查看分支」或「分支管理器」卡片的「分支详情」可以查看创建的 release 分支及运行分支信息。Group@1xGroup@1x

  5. 再次运行时,可以选择继续添加分支或删除已集成分支。Group@1x (1)

删除已集成分支,执行流水线时将会进行以下操作:

  1. 基于分支管理器中设置的基础分支(如 master),创建新的 release 分支。

  2. 除了该特性分支外的其他在云效配置中的其他分支合并到 release 分支。

  3. 基于 release 分支的最新内容运行流水线。