我一直在研究并试图找出满足以下要求的最佳分支和部署策略。也许我错过了一些东西,但它比看起来更复杂。理想情况下,我们只有一个永久分支“master”,它可以标记特定的提交以将发布标记为生产。
我们当前的策略是基于 Git Flow 并拥有永久分支“master”(只有发布到生产)和“develop”。使用多个永久分支模型复杂化的主要问题是从暂存环境“提升”相同构建到生产环境的概念。目前,这需要在单独的源代码分支中完成(部署到 staging 来自“develop”,部署到 prod 来自“master”)。
工具: Git (VSTS)、TeamCity、Octopus Deploy
要求(功能和修补程序生命周期):
- 所有代码都通过拉取请求进行审查(通过分支策略强制执行)
- 所有代码都部署到暂存环境进行测试
- 我们可以快速返回到之前部署的任何代码快照
- 如果测试成功,那么相同的构建可以从我们的暂存环境“提升”到生产环境(无需再次构建)
在作为单个版本推出生产之前,功能会随着时间的推移而积累。修补程序必须能够通过,而不会陷入“全有或全无”的下一个常规版本。
我喜欢拥有一个带有标签的永久分支的想法(re: master/develop 拆分是多余的,http ://endoflineblog.com/gitflow-considered-harmful ),但是拥有额外的永久分支可能更好地促进部署到不同的生命周期/八达通的版本(功能和修补程序)。
我一直在努力解决如何最好地解决这个问题,我可能会把事情复杂化。任何反馈表示赞赏。