我主要将 ASP.NET 应用程序部署到 Linux 服务器。这是我的标准工作流程:
- 我使用源代码存储库(如 Subversion)
- 在服务器上,我有一个执行以下操作的 bash 脚本:
- 查看最新代码
- 进行构建(创建 DLL)
- 将文件过滤到基本要素(例如删除代码文件)
- 备份数据库
- 将文件部署到以当前日期命名的目录中的 Web 服务器
- 如果部署中包含新架构,则更新数据库
- 使新安装成为默认安装,以便下次命中时提供
Checkout 是使用 Subversion 的命令行版本完成的,而构建是使用 xbuild 完成的(与 Mono 项目中的 msbuild 工作类似)。大多数魔法都是在 ReleaseIt 中完成的。
在我的开发服务器上,我基本上有持续集成,但在生产端,我实际上是通过 SSH 连接到服务器并通过运行脚本手动启动部署。我的脚本被巧妙地称为“部署”,这就是我在 bash 提示符下键入的内容。我很有创意。不是。
在生产环境中,我必须输入“deploy”两次:一次是签出、构建和部署到一个过时的目录,一次是将该目录设置为默认实例。由于目录已过时,我只需在相关目录中键入“deploy”即可恢复到任何以前的部署。
初始部署需要几分钟,恢复到以前的版本需要几秒钟。
它对我来说是一个很好的解决方案,并且只依赖于三个命令行实用程序(svn、xbuild 和 releaseit)、DB 客户端、SSH 和 Bash。
我真的需要有时在 CodePlex 上更新 ReleaseIt 的副本:
http://releaseit.codeplex.com/