如何将IIS 7 Web部署与MSBuild(TeamCity)集成

如何将IIS 7 Web部署与MSBuild(TeamCity)集成?

特洛伊亨特有一个很好的5部分博客系列 ,详细地讨论这个话题。

他有效地编译了所有其他的资源,并把它们变成了一个教程。

这是最明确的(不pipe信不信,最简洁)的方式去做你想做的事情。

经过几天的斗争,我终于设法实现了这个目标。 最后归结为一个MSBuild脚本,在分段/testing服务器上安装和configurationWeb部署,并在Team City中进行设置。

这是很多步骤,一切都可能出错。 我会进一步调查和博客,但这是我第一次尝试。

我正在使用这个设置:

  • .NET 4
  • ASP.NET MVC 2
  • TFS 2008
  • 团队城市
  • IIS7
  • Web部署

这里是MSBuild脚本:

<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <Configuration>Release</Configuration> <Platform>AnyCPU</Platform> </PropertyGroup> <Import Project="Webapplication.csproj" /> <Target Name='Deploy' DependsOnTargets='Build;Package' > <Exec Command='"C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe" -source:contentpath="$(teamcity_build_checkoutDir)\Main\source\Webapplication\obj\Release\Package\PackageTmp\" -dest:contentpath="c:\inetpub\Webapplication\www",includeAcls=false,computername="https://(stagingserver-name):8172/msdeploy.axd?Site=Webapplication",authType=Basic,userName=(staginserver-name)\webdeploy,password=******** -allowUntrusted -verb:sync' /> </Target> </Project> 

关键点:

  • 我设置了Web.Release.config在分段环境中工作
  • 构build脚本必须位于与Webapplication.csproj相同的目录中
  • Web部署必须安装在Team City服务器以及Web(分段)服务器上
  • c:\ inetpub \ Webapplication \ www是Web服务器上的一个目录
  • webdeploy用户名是Web服务器上的本地Windows帐户,可以完全访问c:\ inetpub \ Webapplication \ www

准备工作:

团队城市:

我使用上面的MSBuild脚本设置了一个新的构buildconfiguration,并将目标设置为Deploy