Estoy usando msdeploy.exe ejecutado desde TeamCity para implementar proyectos ASP.Net en servidores de etapas, pero si sufre severamente de devolver siempre un estado 0 al salir, incluso cuando genera varios errores. Esto significa que una implementación incorrecta no falla y todo se ve bien.¿Cómo analizo el resultado de msdeploy y fallo una compilación de TeamCity si hay errores?
Así que tengo que analizar la salida y tener que plantear un error, ¿hay una manera fácil de hacer esto? Alternativamente, ¿hay una manera difícil de hacer esto?
Puede ver en el registro de compilación de TeamCity a continuación lo que está sucediendo (errores, pero continúa debido al estado de salida 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
Esta es una buena solución, una que pasé por alto por completo. Funciona bien. Solo como referencia, utilicé la opción de texto de expresión regular con un valor de "Número de errores: [1-999]", que parece funcionar bien para las tareas basadas en MSBuild. – keithl8041
@ keith8041: esto siempre funcionará, pero ten en cuenta que '[1-999]' significa: 'un caracter que puede ser 1 a 9, o 9 o 9', que solo coincide con el primer caracter después de' Cuenta de error: '. Creo que prefirió decir algo como: 'Número de errores: [1-9] [0-9] *'. Nota: solo estoy curioseando aquí. –