Comment puis-je analyser la sortie de construire msdeploy et ne parviennent un TeamCity s'il y a des erreurs?

StackOverflow https://stackoverflow.com/questions/2314132

  •  22-09-2019
  •  | 
  •  

Question

J'utilise msdeploy.exe terme de TeamCity pour déployer des projets ASP.Net aux serveurs de mise en scène mais si sévèrement souffre toujours de retour d'un état 0 à la sortie, même si elle soulève plusieurs erreurs. Cela signifie qu'une mauvaise deploy ne manque pas et tout semble OK.

Alors, je dois analyser la sortie et ont une erreur qui soulèvent, est-il un moyen facile de faire cela? Sinon, est-il un moyen difficile de le faire?

Vous pouvez le voir dans le journal build TeamCity ci-dessous ce qui se passe (erreurs, mais exerce en raison de 0 état de sortie).

[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
Était-ce utile?

La solution

TeamCity 7 a un échecs de compilation en vedette:

  • Modifier les paramètres de la configuration de construction
  • Aller aux conditions de défaillance de construction onglet (numéro 4)
  • Cliquez sur 'l'état de l'échec Ajouter build'
  • Sélectionnez le type « Fail construit sur un texte spécifique dans la construction journal »
  • J'utilisé la chaîne « exec: nombre d'erreurs: » pour détecter les erreurs MSDeploy, il fonctionne bien
  • Le bouton Test ouvre une boîte de dialogue à portée de main où vous pouvez tester votre condition d'échec sur un journal de la construction précédente que vous connaissez aurait échoué
  • Enregistrer

Dans ma configuration J'invoque msdeploy.exe directement à partir MSBuild, je pense que c'est la raison pour laquelle mon texte d'erreur est différente de la vôtre.

Pretty cool, aimant JetBrains pour cela.

Autres conseils

Voici une approche que je l'habitude de catpure construire des échecs de MSDeploy quand je courais un script pour le déploiement à distance Nant. Il n'est pas un scenerio identique, mais devrait vous donner un concept pour aller de. Fondamentalement, vous pouvez exécuter ce à partir d'un shell que vous avez besoin d'un langage de script comme Powershell pour capturer la sortie et que la poste traite le texte brut revenant de msdeploy. Je rasied cette question avec l'équipe MSDeploy et leur faire savoir c'était une douleur à traiter.

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

Dans TeamCity 9 aller à la configuration de construction et cliquez sur les conditions de défaillance. Cochez la case « un message d'erreur est enregistré par le coureur de construction ». Cela échouera si votre build une erreur se produit au cours du déploiement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top