环境概述:
- Asp.net Web应用程序(源代码存储在svn中)
- SQL Server数据库(数据库架构(表/存储过程)存储在svn中)
- 数据库版本与Web应用程序程序集版本同步(存储在“CurrentVersion”表中)
- CI Hudson服务器检出Web应用程序并运行自定义的MSBuild文件以发布/打包应用程序。
我的MSBuild脚本会在每次构建时更新Web应用程序的程序集版本(Major.Minor.Revision.Build)。 “Revision”设置为当前正在检出的SVN修订版,“Build”设置为Hudson构建号(每次自动构建时递增)。
这样我就可以将应用程序与特定的主干修订版匹配,并从Hudson构建编号获取其他构建统计信息。
我想自动收集迁移脚本(更新的存储过程等),以添加到zip包中。我想通过比较尚未部署到的数据库的SVN修订版和正在部署的修订版来查找自上次部署到该数据库/环境以来在主干上更改的数据库文件。
可以通过手动调用svn diff -r REVNO:REVNO
命令来轻松实现此目的,以列出已更改的.sql文件。然后必须手动将这些文件添加到包中。如果能自动化就太好了。
首先,我想编写一个自定义任务来检查尚未部署到的数据库版本。之后我不太确定。是否有人对如何通过现有或自定义的MSBuild任务实现此目标有任何建议?
最后,我需要自动生成一个脚本以添加到包中,该脚本会更新数据库版本表,使其与应用程序同步。