我正在寻找一种特定的策略/约定,该策略/约定适用于功能分支和数据库部署工具(如 DbUp、DbDeploy、ReadyRoll 等)的并发开发。
我们为并发项目开发运行多个功能分支。
每个分支机构都有一个专门的开发、QA 和 UAT 环境,通过 Octopus deploy 进行部署。
我正在尝试使用 Octopus 处理自动数据库部署,该工具将处理每个分支中应用的更改。
数据库更改将发生在所有分支(包括发布分支)中。
到目前为止,我看到的大多数工具都使用基于序列的脚本方法,这些脚本被检入 VCS 并由该工具部署。该工具在大多数情况下以文件名升序应用脚本,并且我见过的大多数都指定遵循 1、2、3 等方法。
这适用于一个分支。
我的问题将是当功能 A 有 1 并且功能 B 有 1 时 - 两者都被合并到主分支中。我现在有两个 #1 脚本。让它变得更有趣——我们的生产路径是再合并一次,它也可能有一个 1。所以现在我们有 3 个 #1 脚本。
还有向后合并的问题。一旦项目完成 - 将发布分支合并回主分支,然后再次合并到功能分支以将其重置为下一个项目。在这种情况下 - 我有两个额外的 #1 脚本尚未应用于目标功能分支数据库。
我对此的最初解决方案是使用儒略日期作为检入源的 sql 文件名的前导前缀。我还在考虑将分支名称与工作项一起应用于文件。因此 sql 文件将遵循 {XXXXX_Y_ZZZZZZ.sql} 的约定,其中 xxxxx 是朱利安日期,y 是分支,zzzzzz 是来自 TFS 的工作项。
我正在寻找这个问题的具体解决方案。有没有其他人解决了这个问题?你做了什么?有什么缺点?你用了什么工具?