【发布时间】:2010-05-20 09:44:28
【问题描述】:
环境总结。
- Asp.net Web 应用程序(源存储在 svn 中)
- SQL Server 数据库。 (存储在 svn 中的数据库架构(表/存储过程))
- db 版本与 Web 应用程序程序集版本同步。 (存储在“CurrentVersion”表中)
- CI hudson 服务器从 repo 中检出 Web 应用程序并运行自定义 msbuild 文件以发布/打包应用程序。
我的 msbuild 脚本会在每次构建时更新 Web 应用程序的程序集版本 (Major.Minor.Revision.Build)。 'Revision' 设置为当前签出的 svn 版本,'Build' 设置为 hudson 内部版本号(在每次自动构建时递增)。
通过这种方式,我可以将应用程序与特定的主干修订版相匹配,还可以从 hudson 内部版本号中获取其他构建统计信息。
我想自动收集迁移脚本(更新的存储过程等)以添加到 zip 包中。 我想通过将尚未部署到的 db 的 svn 修订版与正在部署的修订版进行比较,我可以找到自上次部署到该数据库/环境以来主干中的哪些 db 文件发生了变化。
这可以通过手动调用svn diff -r REVNO:REVNO 命令列出更改的.sql 文件来轻松实现。然后必须手动将这些文件添加到包中。
如果这可以自动化就好了。
首先我想我必须编写一个自定义任务来检查尚未部署到的数据库版本。在那之后,我很不确定。 有没有人对如何通过现有或自定义的 msbuild 任务来实现这一点有任何建议?
最后我必须自动生成一个脚本来添加到更新数据库版本表的包中,以便与应用程序同步。
【问题讨论】:
-
这是一个可怕的问题。我们使用了相当多的构建脚本,但我仍在努力将我们的数据库导入 SVN,有时开发人员可能会拒绝更改
:) -
好的,找到了一个 svn 命令,它可以将更改的文件列表输出到 xml 文件。从那我应该能够通过 msbuild 处理该 xml 文件,以将我需要的单个文件签出到构建工作区。 '>;'命令是关键 ;) svn diff -r REVNO:REVNO --xml --summarize "svn://PathToTrunk" >; d:/temp.xml
标签: asp.net sql-server svn msbuild continuous-integration