关于.net:自动部署Web应用程序?

关于.net:自动部署Web应用程序?

Automate Deployment for Web Applications?

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

我们需要一种解决方案,使我们能够:

1
2
3
4
- 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

然后,当我们验证了一切准备就绪可以进行直播/分阶段时,我们运行另一个脚本以:

  • 在实时/临时服务器上运行迁移
  • MSDeploy:存档当前的实时/暂存站点
  • MSDeploy:将站点从生成同步到实时/暂存

到了这个阶段还不太好,但是现在它的工作原理很像:D

随着我们对流程的更改,我将尝试使此答案保持更新,因为SA上现在似乎存在一些类似的问题。


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

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

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


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


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

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

编辑:
只是为了弄清楚;您可以使用msdeploy进行所有操作。不需要使用Nant。


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


而不是使用xcopy,我们设法使用带有UNC地址的-source:dirpath命令来连接具有msdeploy的服务器。关键是ignoreAcls = true,并删除对msdeploy字符串中的用户名和密码的调用:

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

该示例将站点从构建服务器的E驱动器部署到实时服务器上的D驱动器。在实时服务器上公开共享或此级别的磁盘访问时,需要考虑一些安全方面的考虑。我们目前正在研究使用受限访问共享文件夹。

然后,我们将此输出通过管道传输到日志文件,然后将其移至备份存档以供参考。日志文件记录了哪些文件被移动以及何时被移动。使用输出管道命令继续上面的示例:

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


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


检出Setup Factory(来自靛蓝玫瑰)。它的功能相当强大。它使用Windows安装程序API。它可能可以满足您的需求。


布。似乎很小,简单,程序上。用Ruby编写,因为Ruby是不可以的(为什么?)。


推荐阅读

    linux应用部署命令?

    linux应用部署命令?,软件,系统,服务,管理,检测,代码,工作,密码,在线,命令,如

    linux运维操作命令?

    linux运维操作命令?,系统,网络,基础,标准,工具,信息,工作,命令,软件,数据,lin

    linux命令行常见操作?

    linux命令行常见操作?,系统,工作,地址,管理,信息,命令,目录,一致,基础,标准,l

    linux清空操作命令?

    linux清空操作命令?,系统,数据,命令,名称,不了,文件夹,文件,环境,回收站,目

    linux安装操作命令?

    linux安装操作命令?,系统,工作,地址,工具,服务,情况,信息,命令,最新,管理,lin

    linux操作系mv命令?

    linux操作系mv命令?,名字,系统,软件,文件,命令,信息,地址,目录,文件夹,源文

    linux操作命令大全图?

    linux操作命令大全图?,工作,地址,系统,信息,命令,目录,控制台,功能,操作,内

    linux部署环境的命令?

    linux部署环境的命令?,环境,基础,项目,管理,软件,状态,设备,平台,网络,传播,

    linux操作命令论文?

    linux操作命令论文?,管理,系统,设计,网络,企业,基础,机电设备,技术,发展,机

    linux命令项目部署?

    linux命令项目部署?,项目,服务,环境,软件,系统,代理,管理,统一,做好,业务,怎

    linux操作命令cp?

    linux操作命令cp?,系统,文件,命令,源文件,基本知识,时间,目录,文件夹,选项,

    linux部署项目的命令?

    linux部署项目的命令?,项目,系统,设备,环境,工作,基础,传播,信息,标准,代码,L

    linux操作命令及用法?

    linux操作命令及用法?,工作,地址,系统,管理,信息,命令,目录,网络,文件,操作,L

    linux常用部署命令?

    linux常用部署命令?,工作,地址,系统,信息,命令,目录,标准,基础,管理,工具,Lin

    linux基础命令和操作?

    linux基础命令和操作?,工作,地址,基础,命令,管理,标准,系统,目录,单位,信息,l

    linux中查询操作命令?

    linux中查询操作命令?,信息,系统,名称,命令,地址,数字,指令,用户,历史,文件,

    linux线程操作命令?

    linux线程操作命令?,系统,工作,时间,代码,线程,信息,第一,命令,函数,操作,lin

    查看linux操作的命令?

    查看linux操作的命令?,系统,工作,信息,情况,地址,命令,软件,电脑,第一,名称,l

    linux压缩操作命令?

    linux压缩操作命令?,系统,命令,文件,名称,数据,软件,平台,目录,选项,下面,lin

    linux系统用命令操作?

    linux系统用命令操作?,系统,情况,工作,发行,位置,管理,地址,信息,密码,命令,l