AppHarbor一步构建以及如何部署我的数据库

时间:2012-09-07 00:17:23

标签: asp.net-mvc-3 deployment msbuild appharbor dbproj

我终于达到了这样的程度:我的解决方案在构建步骤中完成了所需的一切:

  • 下载NuGet个套件。
  • 部署数据库(仅当数据库尚未存在时)。
  • 构建解决方案。
  • 运行任何升级脚本(只需一次,数据库就会跟踪这些脚本)。
  • 运行单元测试。
  • 成功。

这在当地有各种各样的奇迹。

现在我想我将GitHub存储库与AppHarbor集成在一起,因为CI对我来说是下一个合乎逻辑的步骤。

问题是,数据库分两步构建:

  • 构建dbproj,生成.dbschema
  • 我的数据库升级(运行其所有DbUp非常棒)构建,使用BeforeBuild目标构建和部署dbproj,以及AfterBuild目标自行执行数据库升级程序,使用任何尚未运行的SQL脚本更新架构。

问题是.dbproj项目上的AppHarbor构建服务器失败,因为其服务器配置中缺少必需的SqlTasks.target

我尝试了快速修复手动添加该目标(以及它所依赖的其他目标),但这产生了一个我无法通过的错误:

  

无法从程序集加载“SqlBuildTask”任务   Microsoft.Data.Schema.Tasks.Sql [...]

我发现apparently您无法在没有安装.dbprojVS的环境中构建TFS项目。

我该怎么办?我可能有几个选择:

  • 手动连接到AppHarbor数据库,并在我的开发环境中针对新的生产数据库运行生成的部署脚本。
    这一种打败了一步建筑的目的。

  • 不要使用.dbproj数据库项目,只需在DbUp“升级程序”中包含所有基本安装表。 这有两个问题,尽管它们可能已经解决了。第一个是我应该自己创建数据库,第二个是我用来记录数据库升级过程的log4net表将由进程本身创建,这是各种错误在我的书中。

  • 使用一些自定义数据库项目解决方案,我可以在没有此问题的情况下部署数据库 我真的不知道这样的任何解决方案,是否存在,是否可靠?

欢迎提出意见,部署文章或任何建议,快速破解。在AppHarbor上构建.dbproj也足够了。

最后,要求AppHarbor在其构建服务器中包含TFS和/或VS,构建.dbproj项目对于构建来说听起来相当合理是不是太过分了服务器要做,对吗?

0 个答案:

没有答案