为Web应用程序自动部署?

我的团队正在尝试自动部署我们的.Net和PHP Web应用程序。 我们希望简化部署,避免手动操作造成的麻烦和许多麻烦。

我们需要一个解决scheme,使我们能够:

- 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

这大致是我们的解决scheme如何工作:

  • 开发人员构build应用程序的“debugging”版本并运行unit testing,然后签入SVN。
  • CruiseControl看到更新并调用我们的构build脚本…
    • 在构build数据库上运行任何新的迁移
    • 用生成服务器configurationreplaceconfiguration文件
    • 构build应用程序的“debugging”configuration
    • 运行所有单元和集成testing
    • 构build应用程序的“部署”configuration
      • 版本与当前的主要/次要版本和SVN版本的DLL,例如1.2.0.423
      • 将这个新版本移到我们的构build服务器上的“release”文件夹中
      • 删除不需要的文件
    • 如果需要,更新生成服务器上的IIS

然后,当我们validation了一切准备就绪后,我们运行另一个脚本来:

  • 在live /登台服务器上运行迁移
  • MSDeploy:归档当前的现场/暂存站点
  • MSDeploy:同步网站从生成到生活/分期

这个阶段并不是很好,但现在大部分都是像魅力一样工作:D

当我们对stream程进行修改时,我会尽量保持这个答案的更新,因为现在似乎有几个类似的问题。

我已经使用了Visual Build Pro多年,它非常漂亮,易于使用,并且有很多标准操作(比如你提到的)。

我使用Puppet ,Makefiles来构buildRPMs和Bamboo来为我做这个。 我的系统不能直接应用,而且我不熟悉Windows世界,但有一些可转换的模式。

我的make设置允许我为构build我的应用程序的所有东西(php libs,php网站,perl模块,C应用程序等)构buildRPM。 这可以手动调用,或者通过Bamboo。 我将这些RPM转换成yum repo,并且木偶会处理确保在群集中安装最新(或正确)的软件版本。

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

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

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

编辑:只是要清楚的事情; 你可以用msdeploy做所有事情。 使用南特不是要求。

我们设法使用带有UNC地址的-source:dirpath命令来使用xcopy,而不是使用msdeploy。 关键是ignoreAcls = true,并在msdeploystring中删除对用户名和密码的调用:

 msdeploy -verb:sync -source:dirpath=\\build\e$\app -dest:dirpath=\\live\d$\app,ignoreAcls=true 

该示例将站点从我们的构build服务器的E驱动器部署到我们的实时服务器上的D驱动器。 暴露共享或活动服务器上的磁盘访问级别有一些安全考虑因素。 我们目前正在考虑使用有限的访问共享文件夹。

然后,我们将此输出传输到一个日志文件,然后将其移动到备份存档以供参考。 日志文件logging哪些文件被移动,何时。使用输出pipe道命令继续上面的例子:

 ... > E:\archive\msdeploy.log 

没有人提到最终生成器http://www.finalbuilder.com 。 它与Visual build Pro相媲美。 用于创build自动构build部署线束的良好GUI

面料 。 看似小,简单,程序化。 用Python编写,因为Ruby是不可以的(为什么?)。

检查安装工厂(从靛蓝玫瑰)。 它的function非常强大。 它使用Windows安装程序API。 它可能可以做你所需要的。

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