Как мне проанализировать вывод msdeploy и завершить сборку TeamCity при наличии ошибок? - PullRequest
9 голосов
/ 22 февраля 2010

Я использую msdeploy.exe, запускаемый из TeamCity для развертывания проектов ASP.Net на промежуточных серверах, но, если он сильно страдает от постоянного возврата статуса 0 при выходе, даже если возникает несколько ошибок.Это означает, что неудачное развертывание не приводит к сбою, и все выглядит хорошо.

Итак, мне нужно проанализировать вывод и вызвать ошибку, есть ли простой способ сделать это?В качестве альтернативы, есть ли трудный способ сделать это?

Из журнала сборки TeamCity видно, что происходит (ошибки, но продолжается из-за 0 состояния выхода).

[17:32:31]: Skip copying Global.asax to  obj\Debug\Package\PackageTmp\Global.asax, File  obj\Debug\Package\PackageTmp\Global.asax is up to date
[17:32:31]: C:\Program  Files\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets(1845,5):  error : Copying file Web.Debug.config to  obj\Debug\Package\PackageTmp\Web.Debug.config failed. Could not find  file 'Web.Debug.config'.  [C:\BuildAgent\work\f3548ee02a6397b9\webapp\WebApp.csproj]
[17:32:31]: Done Building Project  "C:\BuildAgent\work\f3548ee02a6397b9\webapp\WebApp.csproj" (Package  target(s)) -- FAILED.
[17:32:31]: Build FAILED.
[17:32:31]: "C:\BuildAgent\work\f3548ee02a6397b9\webapp\WebApp.csproj" (Package  target) (1) ->
[17:32:31]: (ValidateGlobalPackageSetting target)  ->
[17:32:31]: C:\Program  Files\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets(817,5):  error : '..\Package\WebApp.zip' exists as a file. You can't package as  an archive directory to be the same path as an existing file. Please  delete the file before packaging. Alternative,you can call msbuild with  /t:CleanWebsitesPackage target to remove it.  [C:\BuildAgent\work\f3548ee02a6397b9\webapp\WebApp.csproj]
[17:32:31]: "C:\BuildAgent\work\f3548ee02a6397b9\webapp\WebApp.csproj" (Package  target) (1) ->
[17:32:31]: (CopyAllFilesToSingleFolderForPackage  target) ->
[17:32:31]: C:\Program  Files\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets(1845,5):  error : Copying file Web.Debug.config to  obj\Debug\Package\PackageTmp\Web.Debug.config failed. Could not find  file 'Web.Debug.config'.  [C:\BuildAgent\work\f3548ee02a6397b9\webapp\WebApp.csproj]
[17:32:31]: 0 Warning(s)
[17:32:31]: 2 Error(s)
[17:32:31]: Time Elapsed 00:00:00.87
[17:32:31]: C:\BuildAgent\work\f3548ee02a6397b9>"C:\Program Files\IIS\Microsoft  Web Deploy"\msdeploy.exe -verb:sync -source:Package=Package\WebApp.zip  -dest:auto -setParam:"IIS Web Application Name"=MyWebName
[17:32:32]: Info: Updating setAcl (MyWebName).
[17:32:32]: Info: Updating setAcl (MyWebName).
[17:32:32]: Info: Updating setAcl  (MyWebName/App_Data).
[17:32:32]: Total changes: 3 (0 added, 0 deleted,  3 updated, 0 parameters changed, 0 bytes copied)
[17:32:32]: Process exited with code 0
[17:32:32]: Build finished

Ответы [ 3 ]

13 голосов
/ 08 марта 2012

TeamCity 7 имеет функцию Отказы сборки:

  • Редактирование настроек конфигурации вашей сборки
  • Перейти на вкладку Условия сбоя сборки (номер 4)
  • Нажмите «Добавить условие сбоя сборки»
  • Выберите тип «Сбой сборки для определенного текста в журнале сборки»
  • Я использовал строку «EXEC: количество ошибок:» для отлова ошибок MSDeploy, она хорошо работает
  • Кнопка «Тест» открывает удобный диалог, в котором вы можете проверить свое состояние отказа в предыдущем журнале сборки, который, как вы знаете, должен был произойти сбой.
  • Сохранить

В моей конфигурации я вызываю msdeploy.exe напрямую из MSBuild, поэтому я считаю, что мой текст ошибки отличается от вашего.

Довольно крутой, любящий JetBrains для этого.

3 голосов
/ 23 февраля 2010

Вот подход, который я использовал для обнаружения сбоев сборки из MSDeploy, когда я запускал сценарий Nant для развертывания удаленно. Это не идентичный сценарий, но он должен дать вам представление о том, с чего можно начать. По сути, вы можете запустить это из оболочки, вам нужен язык сценариев, такой как powershell, для захвата вывода, а затем постобработка обычного текста, возвращаемого из msdeploy. Я рассмотрел эту проблему с командой MSDeploy и дал им понять, что с этой болью приходится иметь дело.

http://www.lostechies.com/blogs/hex/archive/2009/12/29/update-on-using-msdeploy-for-remote-deployments.aspx

0 голосов
/ 06 мая 2015

В TeamCity 9 перейдите в конфигурацию сборки и нажмите «Условия отказа». Установите флажок «сообщение об ошибке регистрируется сборщиком сборки». Это приведет к сбою сборки, если во время развертывания произойдет ошибка.

...