【问题标题】:GitFlow: Properly Testing Release Branches & MasterGitFlow:正确测试发布分支和大师
【发布时间】:2016-02-04 06:44:54
【问题描述】:

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

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

【问题讨论】:

    标签: git github merge git-flow


    【解决方案1】:

    仔细跟踪GitFlow图后,我说服自己永远不要在合并到master时(即严格按照流程)发生冲突。原因,是因为时间线:

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

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

    【讨论】:

    • 你的发布分支是否持续存在?
    • 查看 GitFlow:nvie.com/posts/a-successful-git-branching-model 基本上,如果您遵循此操作,则无需保留发布分支。但这取决于你
    • 读一百遍.. 有道理。我正在尝试将其应用于自动发布,为此您通常需要一些我从中构建的连续分支,因此我问:)
    • 我明白了。保留发布分支 IMO 没有害处
    • 确实..它可能是我目前正在处理的问题的解决方案..从最新批准的构建 QA 构建合并到发布分支..这会触发对 UAT 的新构建..然后,它可以稳定在那里..最后,当准备好合并o master时,它将触发另一个构建并部署到生产..
    【解决方案2】:

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

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

    如果发生故障,我们会以几乎相同的方式回滚。

    【讨论】:

    • 感谢@SWPhantom 的回答。您的答案对 Web 应用程序有意义,并且对您的用例是正确的。我应该更清楚我的问题。我正在开发一个移动应用程序,所以我们真的没有单独的 dev/qa/perf/prod 环境。此外,问题更多的是关于在 git-flow 中应该如何处理发布和主分支,以进行测试并准备好为生产发布而构建。
    猜你喜欢
    • 1970-01-01
    • 2020-03-18
    • 2020-03-23
    • 2019-01-17
    • 2018-01-29
    • 2018-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多