我们有一个 CI 流程,我们将开发分支中的更改推送到开发服务器和 QA 服务器进行测试。 一旦我们对更改工作感到满意并且 QA 通过了他们的测试,我们希望从该品牌中挑选更改并将其合并到主分支中,以推送到我们的暂存和发布环境。 目前,在 TFS 的生成/发布过程中,对开发和 QA 的发布是自动化的。 是否可以添加任务和/或变量,当我们推送到暂存时,我们可以挑选更改并合并到主分支中,并将主分支移动到暂存环境中? 目前,这必须是一个容易出现人为错误的手动过程,并破坏我们的CI过程以依赖手动干预。 我们正在使用当前的 TFS 系统。
谢谢。
简短的回答是,没有办法自动执行您的要求。如果你想这样做,你必须编写自己的代码来做到这一点。我强烈建议不要这样做,原因如下:
您正在做的事情与持续集成相反。从代码库中挑选正确集成的工作功能并将它们合并到另一个分支将更好地称为连续隔离。
通过针对开发和 QA 环境进行在集成状态下测试的更改,并移动到新分支并重新生成,您实际上完全使之前完成的所有测试无效。
更好的方法是使用功能切换(也称为功能标志(禁用仍在开发中的功能,并以集成状态交付应用程序,禁用不完整的功能。
这种合并过程很容易出错。看起来也来自您的流程,它是一个不同的代码库或包,在从开发升级到 qa 或暂存时经过测试。
我建议你看看基于主干的构建。如果您正在开发新功能并且不属于下一个计划版本,则应在功能分支中完成。或者,一旦主干经过测试并通过了集成、用户验收、性能或安全测试,您就可以从主干分支出来并创建一个候选发布分支。候选发布分支的任何更改都需要合并到主干。在这一点上,不要指望有很多变化。这个想法是尽可能晚地分支。
基于主干的构建并不新鲜。它已被采用敏捷和DevOps实践的大型/小型公司所采用。
注意:正在处理特定功能的开发人员应创建自己的功能分支。一旦稳定,它们就可以合并到主干。然后可以删除功能分支。