背景
因此,我在上个月的大部分时间里都在使用 MSDeploy、SSDT 和 TeamCity 自动化我们的 web + db 部署。唯一的问题是,出于演示目的,我只在我们的主干分支工作。不用说,当您考虑需要进行并行开发工作(由 SVN 中的分支隔离)时,这种方法很快就会失败。这就是我卡住的地方,希望能找到一些帮助。
我们的情况
- 我们永远不必支持我们软件的多个并发版本
- 客户始终使用当前版本
我想出什么(到目前为止)
如我所见,我们实际上只需要源代码控制中的两个分支:
- 当前: trunk - 部署发生的地方
- Next:当前迭代的开发分支
在新迭代开始时,Current将被分支(让我们将该分支称为Next)。该迭代的所有开发都将提交给Next,同时,当前版本所需的任何错误修复都将提交给Current。在某个时刻,Next将“完成”,因此,合并回Current。
部署
就部署而言,Next永远不会部署到任何环境中。但是, Current将由 TeamCity 定期(每次提交、每晚等)自动打包/部署到内部环境。在某些时候,其中一个包会被认为“足够好”,因此会被推到部署流中(通过登台、生产)。
注意事项
鉴于上述过程,将Next合并到Current将保证Current上的“代码冻结” ,在此期间不能向客户发布新的错误修复。这种错误冻结将持续到Current被认为“足够好”以发布给客户端,此时Current将被标记并且整个过程将重新开始。
问题
- 这种方法/思路合理吗?
- 这种方法在哪里失败?
- 有没有更好的方法来解决这个问题?
非常感谢任何见解/文档。