9

ASP.Netプロジェクトをステージングサーバーに展開するためにTeamCityから実行されたmsdeploy.exeを使用していますが、いくつかのエラーが発生した場合でも、終了時に常に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
4

3 に答える 3

13

TeamCity7にはビルドエラー機能があります。

  • ビルド構成の設定を編集します
  • [ビルドの失敗条件]タブ(番号4)に移動します
  • [ビルド失敗条件の追加]をクリックします
  • 「ビルドログの特定のテキストでビルドに失敗する」タイプを選択します
  • 文字列「EXEC:error count:」を使用してMSDeployエラーをキャッチしましたが、うまく機能します
  • [テスト]ボタンをクリックすると便利なダイアログが開き、失敗したはずの以前のビルドログで失敗状態をテストできます。
  • 保存する

私の構成では、MSBuildから直接msdeploy.exeを呼び出しています。そのため、エラーテキストがあなたのエラーテキストとは異なると思います。

これにはかなりクールで愛情のあるJetBrainsがあります。

于 2012-03-08T17:43:53.913 に答える
3

リモートで展開するために Nant スクリプトを実行したときに、MSDeploy からビルドの失敗を検出するために使用したアプローチを次に示します。それは同一のシーンではありませんが、そこから出発するためのコンセプトを提供するはずです。基本的に、これはシェルから実行できます。出力をキャプチャするには、powershell のようなスクリプト言語が必要です。さらに、msdeploy から返されるプレーン テキストを後処理します。私はこの問題を MSDeploy チームに報告し、対処するのが面倒であることを伝えました。

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

于 2010-02-23T02:37:21.977 に答える