WebDeploy с MSBuild, не развертывающимся от TeamCity

Я пытаюсь использовать MSDeploy, чтобы развернуть проект MVC к использованию сервера TeamCity. Когда я делаю это на своем компьютере в powershell, используя следующую команду:

msbuild.exe .\mvc.csproj /p:PublishProfile=DevServer /p:VisualStudioVersion=11.0
/p:DeployOnBuild=True /p:Password=MyPassword /p:AllowUntrustedCertificate=true

Это разрабатывает проект и развертывает его к серверу (информация, определенная в DevServer, издают профиль), отлично. Продукция показывает MSDeployPublish раздел в конце, в котором я вижу текст как Стартовая веб-задача развертывания из источника... и затем с рядами, говоря мне, какие файлы обновляются и т.д.

Когда я бегу, это на TeamCity, используя MSBuild Строит шаг на том же самом файле, с теми же самыми параметрами (из того же самого рабочего справочника) это разрабатывает проект, но не издает его. Вместо этого это имеет регулярную продукцию от процесса сборки (CoreCompile, _CopyFilesMarkedCopyLocal, GetCopyToOutputDirectoryItems, CopyFilesToOutputDirectory), но тогда на самом деле не идет и издает что-либо.

Какие изменения я должен внести в установку в TeamCity, чтобы добраться, это, чтобы издать развертывается таким же образом, что это работает, используя MSBuild от моего компьютера?

(TeamCity 7.1, MSBuild 4.0, WebDeploy 3.0, Visual Studio 12, IIS 7. Связанный с мой предыдущий вопрос)

10
Санированная версия PublishProfile доступна здесь: gist.github.com/7326d2a7f5523058d662
добавлено автор Yaakov Ellis, источник
Яаков, вы оставляли использование PublishProfile тогда и использовали дополнительные параметры вместо этого?
добавлено автор Lee Englestone, источник
Можно ли показать какие-либо части PublishProfile? We' ve получил хорошую конфигурацию WebDeploy, но нас don' t используют PublishProfile и I' d нравится видеть, могу ли я сделать мой подгонкой ваш.
добавлено автор John Hoerr, источник

6 ответы

Мы делаем наш WebDeploys с шагом TeamCity MSBuild, формируемым следующим образом:

Build File Path:  Server.csproj

Command Line Parameters:
/p:Configuration=%configuration%
/p:DeployOnBuild=True 
/p:DeployTarget=MSDeployPublish
/p:MsDeployServiceUrl=https://%web.deploy.server%:8172/MsDeploy.axd
/p:DeployIisAppPath=%web.deploy.site% 
/p:AllowUntrustedCertificate=True
/p:Username=
/p:AuthType=NTLM

Мы используем интегрированную идентификацию; изменитесь по мере необходимости, чтобы соответствовать вашей схеме. Ценность этого, я думаю, состоит в том, что это строит все с нуля и не полагается на предварительно построенный пакет. От сути, которую вы отправили, я заметил, что вы делаете некоторую публикацию DB, мы не используем WebDeploy для этого, таким образом, я не могу предложить руководство там. Надежда это помогает.

11
добавлено
Никакая публикация db, просто используя различные строки подключения в web.config в зависимости от конфигурации сборки
добавлено автор Yaakov Ellis, источник
Gotcha. Что-то вы добираетесь бесплатно с вышеупомянутым подходом (и возможно с каким-либо использованием WebDeploy?) это it' ll выступают Web.config преобразовывает для вас.
добавлено автор John Hoerr, источник

Я использую MSBuild.exe для пакета, чтобы пронестись, и MSdeploy.exe, чтобы развернуться в отдельных шагах.

Развернуть package.zip файл на командной строке:

"C:\Program Files\IIS\Microsoft Web Deploy V2\msdeploy.exe" -verb:sync 
     -source:package="C:\Build\MyAppName.Debug.zip" 
     -dest:auto,wmsvc=webservername,username=webdeploy,password=******* 
     -allowUntrusted=true

Эту команду также стоит объяснить подробно:

- verb:sync: делает синхронизацию веб-сайта от источника до места назначения

- source:package = "C:\Build\MyAppName.Debug.zip": источник - пакет zip-файла MSBuild

- dest:auto, wmsvc=webservername: используйте параметры настройки в файле пакета, чтобы развернуться к серверу. Учетная запись пользователя - счет уровня OS с разрешения. Имя хоста определяется, но не название веб-сайта IIS (который ранее определяется в файле проекта MSBuild в свойствах проекта).

Можно изменить параметры на основе конфигурации. Мне нравится, когда он этот путь потому что с отдельными шагами, его более легкое отлаживает проблемы.

Использование TeamCity строит шаг и бегуна командной строки.

Update: If you want an example of how to build the ZIP package using MSBuild, try something like this:

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe"
MyWebApp/MyWebApp/MyWebApp.csproj
/T:Package
/P:Configuration=Debug;PackageLocation="C:\Build\MyWebApp.Debug.zip"

Это должно работать то же самое над вашим местным PC, а также над сервером CI.

9
добавлено
Я согласился бы с этим, но я ничего не могу даже найти в построить продукции моего текущего шага о том, где это производит построить пакет, который мог тогда быть развернут (это действительно обнаруживается на моем компьютере, если я управляю той же самой командой, не определяя VisualStudioVersion=11.0 ),
добавлено автор Yaakov Ellis, источник
В состоянии вы, чтобы работать на командной строке в местном масштабе на сервере w/the TeamCity устанавливаете? Можно получить дополнительную продукцию.
добавлено автор Raul Nohea Goodness, источник

Вот параметры настройки конфигурации, которые наконец работали на меня:

/p:Configuration=CONFIG-NAME
/p:DeployOnBuild=True
/p:DeployTarget=MSDeployPublish
/p:MsDeployServiceUrl=http://SITE-URL/MsDeployAgentService
/p:username="USERNAME"
/p:password=PASSWORD
/p:AllowUntrustedCertificate=True 
/P:CreatePackageOnPublish=True 
/p:DeployIisAppPath=SITE-URL
/p:MSDeployPublishMethod=RemoteAgent
/p:IgnoreDeployManagedRuntimeVersion=True
4
добавлено
Я также должен был оставить использование PublishProfile и вместо этого использовать дополнительные параметры как выше.. позор действительно. Не уверенный, почему мы can' t используют PublishProfiles в этом сценарии?
добавлено автор Lee Englestone, источник

Гарантируйте, чтобы у вас были Инструменты веб-разработчика Microsoft особенность, установленная для Visual Studio. Это отсутствовало на моем строить вещество, но как только я добавил его, TeamCity строят, работал просто великолепно.

0
добавлено

Это может произойти, когда построить целевые пути отсутствуют в вашем каталоге MSBuild. Вместо того, чтобы пытаться заставить тех выстраиваться в линию на каждой машине разработчика, установите цели от Nuget. Тем путем это всегда будет то же самое для всех, независимо от того, как их машина - установка.

0
добавлено

I had exactly the same issue! I've posted the solution I used over at: MsBuild not finding publish profile

Основы были:

  • Устанавливает Голубой SDK 1.8 на построить сервере
  • Сила стоимость/P:PublishProfileRootFolder, чтобы гарантировать MSBuild может определить местонахождение издать профиля
0
добавлено
В дополнение к вашей фиксации я должен был добавить систему. Параметр VisualStudioVersion со стоимостью 11.0. Мы используем смесь Visual Studio 2012 и 2013 на проекте, но только 11.0 работали в TeamCity. Если я установил его в 12.0, издать профиль был проигнорирован снова.
добавлено автор Chris Morgan, источник