【发布时间】:2013-09-06 13:08:48
【问题描述】:
我正在使用 TeamCity 为我们的测试环境创建 .NET 应用程序(使用 SVN 源代码控制)的 CI 和自动部署,一切进展顺利。我正处于想要自动执行 db 脚本的阶段。我进行了一些搜索并阅读了几篇文章,例如http://www.troyhunt.com/2011/02/automated-database-releases-with.html(troyhunt 的博客非常宝贵!),许多人似乎都指向使用 RedGate 软件来管理和部署更改。我有点担心让新工具处理脚本生成,所以想知道是否还有其他公认的方法值得研究。
我们当前的解决方案设计标准包括一个包含数据库相关文件的项目,例如我们的 orm db。它还包含一系列文件夹,其中包含我们的更改脚本,如下所示。
MySolution
> MySolution.Data
> 3.0 Scripts
* 01 - UpdateUserTable.sql
* 02 - UpdateRoleTable.sql
> 3.1 Scripts
* 01 - CreateJobTable.sql
* 02 - InsertJobTypes.sql
* 03 - AndSoOn.sql
我相信这种结构很重要,因为虽然我们希望在签入时自动部署到我们的测试环境,但我们部署实际版本的频率要低得多,而且我不确定 RedGate 的比较工具是否可以处理有时发生的更改级别。这就是为什么我更愿意为脚本使用版本文件夹,然后在发布时增加次要版本以保持脚本版本整洁。
有了这个预先存在的结构,我倾向于保留它并添加一个 TeamCity 构建定义,它可以在成功部署时应用 db 脚本。我想我可以让 TeamCity 在预期的路径中识别新添加的 .sql 文件到 SVN,然后在服务器上执行这些文件,但也许我期待太多了。我过去曾使用 TFS 和 MSBUILD 以及自定义构建步骤实现过这种解决方案,但对 TeamCity 方式完全陌生。
是否已经有实现类似目标的过程?在我看来,这似乎是一个很正常的实现,我只是还没有弄清楚是怎么回事。还是 RedGate 解决方案是我们应该追求的标准?
【问题讨论】:
-
你用的是什么ORM框架?
-
我们通常使用实体框架
标签: .net sql-server svn teamcity