GitFlow:正确测试发布分支和主控

GitFlow: Properly Testing Release Branches & Master

我一直在 git 中寻找一个好的分支模型,发现 GitFlow 非常适合我们的开发环境。然而,一个悬而未决的问题是如何以及在何处测试我们的版本。

发布分支听起来像是 运行 在发布之前进行所有回归测试的地方。然而,发布分支然后被合并到 master 中,被标记,这就是最终投入生产的分支。如果从 release 分支到 master 有合并冲突怎么办?听起来 master 需要完全重新测试(这可能很昂贵)。即使没有冲突,简单地将合并推到生产中是否安全,或者是否需要 运行 额外的基本冒烟测试?

我认为应该在发布的每个阶段进行测试。创建一个发布测试的轻量级子集,您可以 运行 直接针对生产环境至少测试基本功能。当然,不要 load/perf 针对生产进行测试。

根据您的产品是什么以及您推出产品的方式,实际测试可能会发生变化。我们有一些生产服务器,我们在其中部署了新的发布代码。这些服务器经过全面测试,但我们的客户无法访问。当这些检查出来时,我们将它们与我们其余的生产服务器交换出来。重复部署和测试。一切都通过后,所有生产服务器都将放回面向客户的服务器的实时池中。

万一出现故障,我们会以大致相同的方式回滚。

仔细追踪GitFlow图后,我确信合并到master时永远不会有任何冲突(如果严格遵循流程) .原因,是因为时间线:

  1. Develop分支是从Master创建的
  2. 在 Develop 分支上提交功能
  3. 发布分支已创建(其中包括到目前为止开发中的所有提交)
  4. 错误已在 Release 分支中修复
  5. 准备好后,Release 分支合并到 Master
  6. Master 必须包含来自 Develop + Release 分支的所有提交。不应该发生冲突,因为在创建 Develop 分支后没有对 Master 执行任何操作(这是唯一会发生冲突的方式)。此外,此时的代码应该与 Release 分支上的最新提交相同,这意味着不需要额外测试。

我简化了 GitFlow 图以说服自己: