我经营着一家使用 ASP.NET(Webforms 和 MVC)的小型 Web 开发商店。我们确实为各种客户工作,因此随时可能有许多项目处于活动状态(有些只是在等待维护更新或错误修复)。
目前我们以非常手动的方式部署(FTP 文件到服务器,远程到服务器,将实时站点复制到备份文件夹,将新文件复制到实时站点)。显然,这还有很多不足之处,并且会发生错误。
我已经阅读了很多关于 CI 和自动构建和部署工具的内容,但我不能完全理解它,因为它们看起来都相当令人生畏。
我正在寻求自动化此部署过程,并且我正在尝试找出最适合学习和使用的工具:
- 开发人员将代码检查到本地机器上的 Mercurial 中,然后与网络连接的构建服务器上的主存储库同步。
- 构建服务器开始构建并检查单元测试是否良好。冲洗并重复。
- 开发人员通过 FTP 手动选择部署到远程 Windows 服务器(还有其他方法吗?)和 zip 文件(理想情况下只包含以前部署版本的更改文件)。
- 远程服务器轮询 FTP 文件最终所在的文件夹,解压缩它们,将它们复制到测试文件夹,备份测试数据库并针对测试数据库运行升级脚本(或使用迁移应用程序,如 migratordotnet 或 rikmigrations)。还需要执行配置转换。
- 客户审查更改并接受它们或提供反馈。
- 如果客户端接受,开发人员在远程服务器的 Web 界面上按下“部署到暂存”按钮,实时数据库被备份,恢复到暂存数据库,实时站点的文件被复制到暂存站点文件夹(有效地创建实时站点的克隆),测试站点的更改文件被复制到暂存站点(不包括某些文件夹,例如测试图像上传等),然后再次运行迁移脚本。
- 开发人员检查更改没有破坏登台站点。
- 开发人员在远程服务器的 Web 界面上按下“部署到现场”按钮,现场站点被复制到备份文件夹中,临时站点的文件被复制到它的位置(不包括用户上传的图像等)。备份实时数据库并运行迁移脚本。
- 如果出现问题,开发人员可以通过将备份文件复制回活动站点的文件夹并恢复以前的数据库来将活动站点恢复到以前的版本。
我真的不想为 100 个可配置的选项而苦苦挣扎。必须快速设置新项目(不超过 5 分钟)且可重复。
我们不是企业,但如果我必须花一些钱来实现这一点,我已经准备好支付许可证费用。