方法 #1
如果你有时间,我建议使用CruiseControl.NET。至少有一段时间,stackoverflow 团队将其用于部署。
方法 #2
就复制策略而言,我建议将 7zip 和 ftp 组合用于应用程序和媒体。7Zip 很好,因为它允许您排除文件类型 (web.config)、文件夹和文件类型,并允许您以不同的方式压缩不同的文件。例如,压缩 PNG 是没有意义的。请注意,这每次都会进行完整部署。因此,如果您有大型媒体文件夹,我会单独处理它们。
至于数据库,我相信您使用 Redgate 的 SQL Compare 会获得最好的运气。它们是商业应用程序,但它们非常非常好。他们在 stackoverflow 播客中被多次正面提及。
- 在开发/构建服务器上构建一个 CMD 文件,该文件生成主 7zip 文件并将其通过 FTP 传输到登台(或生产)服务器上的专用文件夹。我最终多次调用 7zip 将文件输入到单个 7zip 文件中,每批使用不同的压缩方法。
- 为每个登台或生产服务器构建一个 CMD 文件。该文件将执行正确的文件备份,并将 7zip 文件解压缩到正确的位置。
部署到 staging 将如下所示:
- 执行您的 7zip-prep 命令文件,该文件将触发 FTP 上传到登台服务器上的专用 FTP 文件夹
- 通过 SQL Compare 生成的脚本对暂存数据库服务器执行数据库更改
- 在登台服务器上执行 7zip 提取命令文件
这是我使用的方法。我没有花时间掌握 CruiseControl.NET,但当我这样做时,我可能会使用它,至少对于更大的应用程序。这不是一键式部署,但它允许每天进行多次高效部署(就像我几年来一直在做的那样)。7zip 方法很好,因为一旦您有了命令文件,您就可以快速复制它们并将它们用于新项目。