Мне, наконец, удалось заставить его работать после нескольких дней борьбы. Наконец, все сводится к сценарию MSBuild, устанавливающему и настраивающему веб-развертывание на промежуточном / тестовом сервере и настраивающему его в Team City.
Это много шагов, и все может пойти не так. Я буду исследовать дальше и вести блог об этом, но это моя первая попытка, которая работает.
Я использую эту настройку:
- .NET 4
- ASP.NET MVC 2
- TFS 2008
- Город команды
- IIS7
- Веб-развертывание
Вот скрипт 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 для работы в промежуточной среде
- Сценарий сборки должен находиться в том же каталоге, что и Webapplication.csproj
- Веб-развертывание должно быть установлено как на сервере Team City, так и на веб (промежуточном) сервере
- c: \ inetpub \ Webapplication \ www - это каталог на веб-сервере
- Имя пользователя webdeploy - это локальная учетная запись Windows на веб-сервере с полным доступом к c: \ inetpub \ Webapplication \ www
Подготовка:
Город команды:
Я настроил новую конфигурацию сборки с помощью приведенного выше сценария MSBuild и установил для цели значение Deploy