Публикация решения vs2012 от TeamCity
Я использую Visual Studio 2012 и функцию публикации. Я создал профиль публикации, который развертывает мое приложение на сервере разработки, и он отлично работает при выполнении с vs2012 на моей машине. Вот моя проблема; на сервере разработки у меня также установлен TeamCity, и я хотел бы запустить публикацию после завершения сборки. Поэтому я создал простой шаг сборки, который выглядит так:
Build file path: .\src\Solution.sln
Targets: Rebuild
Command line parameters: /p:DeployOnBuild=true;PublishProfile=Ci
Когда этот шаг выполняется, я получаю следующую ошибку:
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets(4377, 5): error ERROR_USER_NOT_ADMIN: Web deployment task failed.
(Connected to 'dev.domain.com' using the Web Deployment Agent Service, but could not authorize. Make sure you are an administrator on 'dev.domain.com'.
Профиль Ci содержит имя пользователя и пароль, которые работают при запуске публикации из Visual Studio на моей машине. Я также попытался передать имя пользователя и пароль в качестве параметров на этапе сборки, но я получаю тот же результат. Нужно ли мне запускать службы TeamCity под учетной записью администратора, чтобы заставить это работать? Все предложения приветствуются.
Ответы
Ответ 1
Я только что написал об этом в http://sedodream.com/2013/01/06/CommandLineWebProjectPublishing.aspx.
Вы довольно близки, надеюсь, я смогу закрыть разрыв.
Вы правы, что имя пользователя и пароль указаны в диалоговом окне публикации VS, но мы не сохраняем пароль в файле .pubxml. В настоящее время он сохраняется в файле .pubxml.user, и этот файл вообще не используется для сценариев командной строки. Из-за этого вам нужно будет пройти в собственность. Поэтому в вашем случае это должно быть
msbuild .\src\solution.sln /p:DeployOnBuild=true /p:PublishProfile=ci /p:Password=<insert-password>
Если ваш веб-сервер не имеет доверенных сертификатов, вам может потребоваться также передать /p:AllowUntrustedCertificate=true
.
Одно небольшое дополнение, которое не может быть напрямую связано с вашей проблемой, но может быть полезно для других, которые могут увидеть это позже.
Если вы создаете файл .csproj/.vbproj(и, возможно, в некоторых сценариях, где используется файл .sln), вы должны передать свойство /p:VisualStudioVersion=11.0
. Дополнительная информация об этом доступна в моем блоге http://sedodream.com/2012/08/19/VisualStudioProjectCompatabilityAndVisualStudioVersion.aspx