Comment puis-je analyser la sortie de construire msdeploy et ne parviennent un TeamCity s'il y a des erreurs?
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
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.
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.