代码之家  ›  专栏  ›  技术社区  ›  Alex

如何在持续集成过程中包含我的数据库?

  •  2
  • Alex  · 技术社区  · 15 年前

    请原谅,今天是我第一天尝试使用TeamCity建立一个CI环境。我正在开发一个ASP.NET/SQL Server应用程序,目前为止还不错。msbuild是我的提供程序。

    我想知道当自动确保对本地数据库的更改作为集成过程的一部分上载到测试服务器时,这些选项是什么。现在,我不太确定是否要朝dbghost的方向自动同步模式更改,我很乐意用本地数据库的副本替换测试服务器上的数据库。

    我在这里有什么选择?

    编辑:进一步调查表明,Redgate SQL产品对此很好。但它们并不便宜。他们有一份关于在持续集成过程中使用其产品的漂亮白皮书: http://downloads.red-gate.com/HelpPDF/ContinuousIntegrationForDatabasesUsingRedGateSQLTools.pdf

    1 回复  |  直到 10 年前
        1
  •  4
  •   Community CDub    8 年前

    首先,我认为您的数据库应该包含在源代码管理策略中。实现这一目标的基本原则在 K. Scott Allen series . 你也可以查一下 Evolutionary Database Design by Martin Fowler . 更多实用信息,请查看 How should you build your database from source control? .

    正如我写在 my answer 我维护了两组脚本:一组可以从头构建数据库,另一组可以将给定的数据库从一个版本升级到最后一个版本。作为CI战略的一部分:

    • 应该使用这些脚本从头开始重建CI服务器上的数据库。然后可以检查脚本是否处于工作状态。
    • 在一个完美的世界中,我应该能够从数据库的版本n-1升级到版本n,并将获得的模式与以前数据库的模式进行比较。我还在努力…
    • 测试数据应该被注入数据库中,允许对应用程序进行单元测试(您可以 use bcp 为此)。