我正在使用从TeamCity运行的msdeploy.exe将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
答案 0 :(得分:13)
TeamCity 7具有构建失败功能:
在我的配置中,我直接从MSBuild调用msdeploy.exe,我认为这就是为什么我的错误文本与你的错误文本不同。
非常酷,热爱JetBrains。
答案 1 :(得分:3)
当我运行Nant脚本进行远程部署时,这是我用来从MSDeploy中捕获构建失败的方法。它不是一个相同的场景,但应该给你一个概念。基本上你可以从shell运行它,你需要像PowerShell这样的脚本语言来捕获输出,而不是后处理从msdeploy返回的纯文本。我与MSDeploy团队讨论了这个问题,让他们知道这是一个很难处理的问题。
答案 2 :(得分:0)
在TeamCity 9中,转到构建配置并单击“失败条件”。选中复选框"构建运行程序"记录错误消息。如果在部署期间发生错误,这将使您的构建失败。