【发布时间】:2016-05-16 20:26:06
【问题描述】:
我一直在研究并试图找出满足以下要求的最佳分支和部署策略。也许我错过了一些东西,但它比看起来更复杂。理想情况下,我们只有一个永久分支“master”,它可以标记特定的提交以将发布标记为生产。
我们当前的策略基于 Git Flow,并拥有永久分支“master”(只有发布到生产环境)和“develop”。使用多个永久分支模型复杂化的主要问题是,将同一构建从暂存环境“提升”到生产环境的概念。目前,这需要在单独的源代码分支中完成(部署到 staging 来自“develop”,部署到 prod 来自“master”)。
工具: Git (VSTS)、TeamCity、Octopus Deploy
要求(功能和修补程序生命周期):
- 所有代码均通过拉取请求审核(通过分支策略强制执行)
- 所有代码都部署到暂存环境中进行测试
- 我们可以快速返回到之前部署的任何代码快照
- 如果测试成功,则可以将相同的构建从我们的暂存环境“提升”到生产环境(无需再次构建)
在作为单个版本推出生产之前,功能会随着时间的推移而积累。修补程序必须能够通过,而不会陷入“全有或全无”的下一个常规版本。
我喜欢拥有一个带有标签的永久分支的想法(回复:主/开发拆分是多余的,http://endoflineblog.com/gitflow-considered-harmful),但是拥有额外的永久分支可能更好地促进部署到不同的生命周期/版本(功能和修补程序)以章鱼。
我一直在努力解决如何最好地解决这个问题,我可能过于复杂了。感谢您提供任何反馈。
【问题讨论】:
-
您的问题是什么?您已经描述了基础设施和一些一般性的想法,但您的文本中没有问题,也无法给出答案(讨论和自以为是的 cmets 确实不是答案)。
-
很抱歉。我已经更新了标题。我试图弄清楚如何使用列出的工具来完成列出的要求。
-
这个问题太宽泛了。这是 2 个自动化工具和一个 SCM,它们几乎可以完成任何事情。你能提供一个设计/实践,我们看看我们是否可以提供改进它的想法?这可能更容易。
标签: deployment teamcity octopus-deploy branching-strategy