Visual Studio 的发布管理 - 管道如何与 DEV/QA/Production 分支一起工作?

Release Management for Visual Studio - How pipeline works with DEV/QA/Production Branches?

我们为每个环境 (DEV/QA/PROD) 设置了单独的 TFS 2012 分支。

更改已签入 DEV 分支,通过 RM 将 Visual Studio 2013 Update 4 发布到 DEV 服务器。

当前版本模板已选择来自 DEV 分支的构建定义,但我们需要在进入下一阶段时切换到 QA/PROD 个分支。

我们是否需要为每个阶段创建单独的模板,而不是使用包含所有阶段的单个模板?

RM 建立在二进制提升而不是每个阶段分支的思想之上。这个想法是让你从一个阶段提升到下一个阶段的 one 一组二进制文件。这使发布过程更快(没有无关的构建发生)并减少了 QA 时间——如果您在 QA 中测试代码的功能,然后为生产重建,您将发布 未测试 二进制文件投入生产。它还有助于提高可重复性。如果 QA 和 Prod 之间的发布失败,使用每个环境分支模型,您可能对问题 "Why did this work in one environment and not the other?" 有额外的答案。该问题的唯一答案应该是 "because there's a problem with the environment"。它永远不应该是 "because we botched a merge".

您应该重新评估您的分支策略,以便从一个分支构建和发布,而不是依赖多个分支的多个构建。

也就是说,如果您目前不能扰乱您的分支策略,您为每个分支创建单独的发布路径和模板的方法将是解决它的最佳方法。

我通常做这样的事情,假设 DEV -> QA -> PROD:

开发分支进入开发环境。 QA 分支进入 QA 环境。 Prod 分支转到 QA 环境,然后到 prod。

这让开发人员可以在稳定先前版本的同时继续开发新功能。如果您采用这种方法,您很快就会意识到 QA 分支是无关紧要的——您为发布而构建,然后测试您打算发布的东西。

一旦达到这一点,就很容易意识到最好让开发分支保持短命,依赖于从开发到主干的新功能的频繁合并。 Longer-运行 尚未准备好供 public 使用的更改可以隔离在功能标志后面,因此您可以继续推出功能完整且经过测试的较小更改,而 longer-运行 开发工作仍在进行中。