Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GitFlow:正确测试发布分支&;主人_Git_Github_Merge_Git Flow - Fatal编程技术网

GitFlow:正确测试发布分支&;主人

GitFlow:正确测试发布分支&;主人,git,github,merge,git-flow,Git,Github,Merge,Git Flow,我一直在寻找一个好的git分支模型,发现它非常适合我们的开发环境。然而,一个悬而未决的问题是如何以及在哪里测试我们的发布 发布分支听起来像是在发布之前运行所有回归测试的地方。然而,发布分支随后被合并到master中,并被标记,这就是最终投入生产的部分。如果发布分支与主分支之间存在合并冲突,会发生什么情况?听起来master需要完全重新测试(这可能会很昂贵)。即使没有冲突,简单地将合并推到生产环境中是否安全,或者是否需要运行额外的基本冒烟测试?我认为测试应该在发布的每个阶段进行。创建一个轻松的发布

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


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

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

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


如果出现一些故障,我们将以大致相同的方式回滚。

仔细地跟踪图表后,我确信在合并到主控时不应该有任何冲突(即如果严格遵循流程)。原因在于时间线:

  • 开发分支是从Master创建的
  • 特性在开发分支上提交
  • 已创建发布分支(其中包括到目前为止来自Develop的所有提交)
  • 错误在发布分支中修复
  • 准备就绪后,发布分支将合并到主分支中
  • Master必须包含来自Develop+Release分支的所有提交。不应该发生冲突,因为在创建开发分支之后,在主服务器上没有执行任何操作(这是发生冲突的唯一方式)。此外,此时的代码应该与发布分支上的最新提交相同,这意味着不需要额外的测试
  • 我简化了GitFlow图,让自己相信:


    谢谢@SWPhantom的回答。您的答案对于web应用程序是有意义的,并且对于您的用例是正确的。我应该更清楚地回答我的问题。我正在开发一个移动应用程序,所以我们实际上没有单独的dev/qa/perf/prod环境。此外,问题更多的是,在测试和准备为生产版本构建时,应该如何在git流中处理发布和主分支。您的发布分支持续存在吗?检查GitFlow:基本上,如果您遵循这一点,您不需要持续存在发布分支。但这取决于你读一百遍。。这是有道理的。我正在尝试将其应用于自动发布,为此,您通常需要一些我从中构建的连续分支,因此我问:)我明白了。保留发布分支确实没有坏处。。这可能是解决我目前正在处理的问题的办法。。从最新批准的版本QA build on合并到发布分支。。这将触发UAT的新构建。。然后,它可以在那里稳定下来。。最后,当准备好合并o master时,它将触发另一个构建并部署到生产。。