自动部署 Web 应用程序?[关闭]
-
09-06-2019 - |
题
我的团队目前正在尝试自动化 .Net 和 PHP Web 应用程序的部署。我们希望简化部署,并避免手动执行带来的麻烦和许多令人头痛的问题。
我们需要一个解决方案,使我们能够:
- Compile the application
- Version the application with the SVN version number
- Backup the existing site
- Deploy to a web farm
我们所有的应用程序均使用 SVN 进行源代码控制,而我们的 .Net 应用程序则使用 CruiseControl。我们一直在尝试使用 MSBuild 和 NAnt 部署脚本,但成效有限。我们过去也使用过 Capistrano,但希望尽可能避免使用 Ruby。
还有其他部署工具可以帮助我们吗?
解决方案
谢谢大家的好意建议。我们检查了所有这些,但经过仔细考虑,我们决定结合 CruiseControl、NAnt、MSBuild 和 MSDeploy 来推出我们自己的产品。
这篇文章有一些重要的信息:将 MSBuild 与 CruiseControl.NET 集成
我们的解决方案的工作原理大致如下:
- 开发人员构建应用程序的“调试”版本并运行单元测试,然后签入 SVN。
- CruiseControl 看到更新并调用我们的构建脚本...
- 在构建数据库上运行任何新的迁移
- 将配置文件替换为构建服务器配置
- 构建应用程序的“调试”配置
- 运行所有单元和集成测试
- 构建应用程序的“部署”配置
- 使用当前主要/次要版本和 SVN 修订版对 DLL 进行版本控制,例如1.2.0.423
- 将此新构建移动到构建服务器上的“release”文件夹
- 删除不需要的文件
- 如果需要,更新构建服务器上的 IIS
然后,当我们验证一切都已准备好进入实时/暂存状态时,我们运行另一个脚本来:
- 在实时/临时服务器上运行迁移
- MS部署:存档当前的直播/登台站点
- MS部署:将站点从构建同步到实时/暂存
到达这个阶段的时候并不顺利,但现在基本上已经发挥了作用:D
当我们对流程进行更改时,我将尝试更新此答案,因为现在 SA 上似乎有几个类似的问题。
其他提示
我用过 视觉构建专业版 多年来,它非常流畅且易于使用,并且内置了许多标准操作(如您提到的那些)。
我为此使用 msdeploy。它工作完美。
关于蚂蚁;对于.NET 平台,我们有 NAnt,您可以将它与 MSDeploy 结合使用;您可以从 Nant 脚本调用 MSDeploy。
编辑:只是为了把事情说清楚;您可以使用 msdeploy 完成所有操作。使用 Nant 不是必需的。
我们没有使用 xcopy,而是设法使用带有 UNC 地址的 -source:dirpath 命令到带有 msdeploy 的服务器。关键是ignoreAcls = true并删除对msdeploy字符串中的用户名和密码的调用:
msdeploy -verb:sync -source:dirpath=\\build\e$\app -dest:dirpath=\\live\d$\app,ignoreAcls=true
该示例将站点从构建服务器的 E 驱动器部署到实时服务器上的 D 驱动器。在实时服务器上公开共享或此级别的磁盘访问存在一些安全考虑。我们目前正在研究使用受限访问共享文件夹。
然后,我们将此输出传输到日志文件,然后将其移动到备份存档以供参考。日志文件记录移动了哪些文件以及移动时间。使用输出管道命令继续上面的示例:
... > E:\archive\msdeploy.log
没有人提到最终生成器 http://www.finalbuilder.com. 。它与 Visual build Pro 相当。用于创建自动化构建部署工具的良好 GUI
织物. 。看起来小、简单、程序化。用 Python 编写,因为 Ruby 是禁忌(为什么?)。
查看Setup Factory(来自靛蓝玫瑰)。它的功能非常强大。它使用 Windows 安装程序 API。它可能可以满足您的需要。
Nant 存在的唯一原因是让您拥有一个类似于 Ant 的框架,我们可以在其中使用 .NET 语言集编写任务。如果您不想让纯 .NET 开发人员编写自定义任务,我看不出您有什么理由不能使用 Ant。仅仅因为您使用 .NET 语言编写应用程序,并不意味着您必须使用 .NET 构建工具。