如何将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
准备工作:
- 我遵循http://technet.microsoft.com/en-us/library/dd722796(WS.10).aspx上的步骤
- 我遵循http://learn.iis.net/page.aspx/516/configure-the-web-deployment-handler/关注第1部分;
- 并为c:\ inetpub \ Webapplication \ www和所有用户创build了一个contentPath规则
团队城市:
我使用上面的MSBuild脚本设置了一个新的构buildconfiguration,并将目标设置为Deploy