40

我的团队目前正在尝试自动部署我们的 .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。

是否有任何其他部署工具可以帮助我们?

4

9 回答 9

33

谢谢大家的好意建议。我们检查了所有这些,但经过仔细考虑,我们决定结合 CruiseControl、NAnt、MSBuild 和 MSDeploy 推出自己的产品。

这篇文章有一些很好的信息: Integrating MSBuild with CruiseControl.NET

以下是我们的解决方案的大致工作原理:

  • 开发人员构建应用程序的“调试”版本并运行单元测试,然后签入 SVN。
  • CruiseControl 看到更新并调用我们的构建脚本...
    • 在构建数据库上运行任何新迁移
    • 用构建服务器配置替换配置文件
    • 构建应用程序的“调试”配置
    • 运行所有单元和集成测试
    • 构建应用程序的“部署”配置
      • 使用当前主要/次要版本和 SVN 修订版对 DLL 进行版本化,例如 1.2.0.423
      • 将此新构建移动到我们构建服务器上的“发布”文件夹
      • 删除不需要的文件
    • 如果需要,更新构建服务器上的 IIS

然后,当我们验证一切都准备好上线/登台时,我们运行另一个脚本来:

  • 在实时/登台服务器上运行迁移
  • MSDeploy:存档当前的实时/登台站点
  • MSDeploy:将站点从构建同步到实时/登台

到这个阶段还不是很顺利,但它现在主要是像魅力一样工作:D

当我们对流程进行更改时,我将尝试更新此答案,因为现在 SA 上似乎有几个类似的问题。

于 2008-09-11T09:17:22.203 回答
3

我已经使用Visual Build Pro多年了,它非常流畅且易于使用,并且内置了许多标准操作(如您提到的那些)。

于 2008-09-05T13:50:45.950 回答
3

我使用Puppet、 Makefiles 来构建 RPM 和Bamboo来为我做这件事。我的系统不直接应用,而且我对 Windows 世界不熟悉,但有一些可移植的模式。

我的 make 设置允许我为构成我的应用程序的所有内容(php 库、php 网站、perl 模块、C 应用程序等)构建 RPM。这可以手动调用,也可以通过 Bamboo 调用。我将这些 RPM 转移到一个 yum repo 和 puppet 句柄中,以确保在集群中安装了最新(或正确)版本的软件。

你能自动将软件包构建到 MSI 中吗?我认为 Puppet 可以管理 Windows 中软件包和版本的安装。

于 2008-09-05T15:09:51.377 回答
2

我为此使用 msdeploy。它工作完美。

关于蚂蚁;对于 .NET 平台,我们有 NAnt,您可以将它与 MSDeploy 结合使用;您可以从您的 Nant 脚本中调用 MSDeploy。

编辑:只是为了让事情清楚; 你可以用 msdeploy 做任何事情。使用 Nant 不是必需的。

于 2010-06-27T00:22:19.930 回答
1

我们没有使用 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
于 2008-09-16T09:13:20.533 回答
1

没有人提到 Final Builder http://www.finalbuilder.com。它与 Visual build Pro 相当。用于创建自动构建部署工具的良好 GUI

于 2010-09-07T18:49:38.123 回答
0

面料。看起来小,简单,程序。用 Python 编写,因为 Ruby 是一个禁忌(为什么?)。

于 2008-09-05T13:23:30.620 回答
0

查看设置工厂(来自靛蓝玫瑰)。它的功能非常强大。它使用 Windows 安装程序 API。它可能可以满足您的需求。

于 2008-09-05T13:26:42.640 回答
0

Nant 存在的唯一原因是您拥有一个类似于 Ant 的框架,我们可以在其中使用 .NET 语言集编写任务。如果您不想让纯 .NET 开发人员编写自定义任务,我看不出您有任何不能使用 Ant 的理由。仅仅因为您使用 .NET 语言编写应用程序,并不意味着您必须使用 .NET 构建工具。

于 2010-06-27T00:41:30.390 回答