让MSDeploy在我们的构建/集成服务器上运行 - 是否需要进行MSBuild升级?

时间:2010-04-09 15:16:37

标签: msbuild continuous-integration msdeploy

我认为我们认为这是一个相当标准的构建过程: 1.开发人员:签入代码 2.构建:轮询回购,看到变化,并开始构建: 3.构建:来自repo的更新,使用MSBuild构建,使用nunit运行单元测试, 4.构建:创建安装程序包

我们的安全团队允许我们从构建服务器提取,但不允许构建服务器推送。因此,我们通常会对安装程序进行操作,然后运行它们,这将排除光滑的部署服务,因此我需要生成包。我想使用MSDeploy,除了我们有以下问题:

  1. 我们使用的是.net 3.5,使用MSDeploy的MSBuild目标(包)需要4.0。除此之外,我还需要安装除.net 4.0 RC以外的任何东西吗? (MSBuild会参与升级吗?)
  2. 当我使用MSDeploy生成包时,我发现我没有一个文件。有一个zip,deploy.cmd,SourceManifest.xml和SetParameters.xml。什么是其他文件,以及为什么它们都不在'包'中?
  3. 听起来好像你可以通过告诉系统查看工作的IIS站点来创建包。但如果这些软件包是从CI环境构建的,那么你在这里基本上没有运气吗?感觉就像他们为从开发环境部署的小规模开发人员设计了一些。这是一个很好的用例,但我有兴趣了解每个人的企业体验是什么?
  4. 有什么建议吗?

1 个答案:

答案 0 :(得分:26)

如果您没有将Visual Studio 2010用于您的应用程序,那么我建议您选择以下其中一项:

  1. 使用msdeploy.exe
  2. 在构建服务器上安装Visual Studio 2010,并自行安装MSDeploy任务
  3. 让我再解释一下。

    选项1

    MSDeploy本身与MSBuild无关,因此您可以在构建服务器上自行安装它以为您创建软件包。您可以从here下载。之后,您可以使用Exec任务创建MSBuild部署脚本,以使用创建程序包的命令调用msdeploy.exe。

    关于第二个选项

    .targets文件以及MSDeploy的任务不是与.NET框架一起部署的,而是与Visual Studio 2010本身一起部署的。因此,如果您想利用其中任何一个,您必须在构建服务器上安装VS 2010。

    您提到在帖子中使用了包目标。您将无法使用它,因为该目标是.NET 4项目的更大构建过程的一部分。你可以做的是创建一个单独的MSBuild文件(分开,而不是你的项目文件),它使用MSBuild 4来调用随VS 2010 for Web提供的任务部署。

    我在此特此回答您的编号清单

    1. 您必须安装Visual Studio 2010,因为这些任务随VS本身而非框架一起提供。
    2. 这些文件用于与您的包进行交互。您的包裹整体呈现您的应用程序。 deploy.cmd将调用msdeploy.exe来为您执行部署。 SourceManifest.xml和SetParameters.xml用于自定义应用程序的部署。 deploy.cmd将在调用msdeploy.exe时使用这些文件。换句话说,如果要自定义安装Web应用程序的路径,可以在SetParameters.xml中设置它以及其他选项。
    3. 您的权利设置可以来自IIS,但许多开发人员更喜欢使用VS应用程序服务器而不是IIS。这是我的偏好。在这种情况下,我建议将您的应用程序部署到您将用作模板的环境中。创建所需的所有IIS设置,创建MSDeploy包,然后从包中获取archive.xml文件,并在创建自己的包时使用它。另一个选择是设置构建进程可以部署到的IIS服务器,然后使用MSDeploy只是同步构成应用程序的文件,然后再次从该IIS服务器生成程序包。