2009-07-15 7 views
3

現在、CC.NET(CruiseControl.Net)でmsbuildの出力をフォーマットしていないため、壊れたビルドの原因を見つけるには、XMLを読み込んで、最後の 'success = "false"インスタンスを出力。CruiseControl.NetでMsBuild XML出力をフォーマットするために使用するXSLTは何ですか?

msbuildの出力をフォーマットするために使用するXSLTは何ですか?結果のHTMLに満足していますか?私。壊れたビルドの原因を特定するのは簡単ですか?

おかげ B

EDIT: は、ここに私たちCCプロジェクトのXML要素の一つの消毒サンプルです。私は今、ログのマージが問題かどうか疑問に思っています。

<project name="StackOverflowSample"> 
    <workingDirectory>D:\_300</workingDirectory> 
    <webURL>&viewFarmReportWebURL;</webURL> 
    <sourcecontrol type="multi"> 
     <sourceControls> 
      <vsts> 
       <!-- We get latest from TSF --> 
      </vsts> 
     </sourceControls> 
    </sourcecontrol> 
    <triggers> 
     <intervalTrigger seconds="60" /> 
    </triggers> 
    <tasks> 
     <msbuild> 
      <executable>&msbuildExecutable;</executable> 
      <workingDirectory>app\consoleApp1</workingDirectory> 
      <projectFile>consoleApp1.sln</projectFile> 
      <buildArgs>/noconlog /p:Configuration=Release /v:quiet</buildArgs> 
      <logger>ThoughtWorks.CruiseControl.MsBuild.XmlLogger,"D:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll"</logger> 
     </msbuild> 
     <nunit> 
      <path>&nunitConsoleExecutable;</path> 
      <assemblies> 
       <assembly> D:\_300\app\consoleApp1\bin\Release\consoleApp1.exe</assembly> 
      </assemblies> 
     </nunit> 
     <exec> 
      <executable>&ncoverExecutable;</executable> 
      <buildArgs>"&nunitConsoleExecutable;" "app\consoleApp1\bin\Release\consoleApp1.exe" /nologo</buildArgs> 
     </exec> 
     <exec> 
      <executable>&ndependExecutable;</executable> 
      <buildArgs>D:\_300\app\consoleApp1.xml /Silent</buildArgs> 
     </exec> 

     <merge> 
      <files> 
       <file>D:\_300\app\consoleApp1\unit-test.xml</file> 
       <file>D:\_300\app\consoleApp1\ApplicationMetrics.xml</file> 
       <file>D:\_300\app\consoleApp1\AssembliesBuildOrder.xml</file> 
       <file>D:\_300\app\consoleApp1\AssembliesDependencies.xml</file> 
       <file>D:\_300\app\consoleApp1\AssembliesMetrics.xml</file> 
       <file>D:\_300\app\consoleApp1\CQLResult.xml</file> 
       <file>D:\_300\app\consoleApp1\InfoWarnings.xml</file> 
       <file>D:\_300\app\consoleApp1\NDependMain.xml</file> 
       <file>D:\_300\app\consoleApp1\TypesDependencies.xml</file> 
       <file>D:\_300\app\consoleApp1\TypesMetrics.xml</file> 
      </files> 
     </merge> 
    </tasks> 
    <publishers> 
     <merge> 
      <files> 
       <file>D:\_300\app\consoleApp1\SymbolModule.Xml</file> 
      </files> 
     </merge> 
     <xmllogger logDir="." /> 
     &emailconsoleApp1; 
    </publishers> 
</project> 

答えて

1

会話の後、開発者(リンク先の代替ロガーがかなり古いと言われていますが、その使用は推奨されません)、私はデフォルトの標準ロガーとxsltを使用しています。問題が発生した場合は、CruiseControl.Net Jiraのバグを報告してください。コードにコミットアクセスできる人が早く見つかるほど、より多くの人がこれに投票します。

"ビルドログを見る"は、ビルドサーバーの設定をデバッグする以外は使用できません。私のプロジェクトの中には、これが5MBもの大きさで、サーバーに問題はありません。しばらくの間)。 NCoverは、buildlog.xmlを100MB以上に膨らませる問題を引き起こす可能性があります。この場合、NCoverExplorerを使用して結果をマージする前に分析する必要があります(ただし、サーバーから例外を取得する前に気にしないでください)。 (これはあなたViewBuildReportページの「MSBuildの報告書」へのリンクを与え、ページ自体にいくつかの基本的な情報が含まれます)ダッシュボードの設定がmsbuild.xslが含まれていることを確認して、WebDashboardでフォーマットMSBuildの結果を表示するには

+0

リンクありがとうございます。私はあなたの答えに投票しましたが、私はそれをまだ解決策としてマークすることはできません。;) あなたが提供したリンクを開いて調査します。カスタムロガーは良いアプローチだと思います。なぜなら、私が書きましたが、ノイズをフィルタリングして、より迅速に、より少ない時間で、CIサーバー上に流出する小さなログを生成できるからです。 –

+0

私は完全に理解していません - 「デフォルト」ロガーは依然としてカスタムであり、特にCCNet用に書かれています。もしRodemeyerの方がうまくいくなら、それはおそらくディストリビューションの「デフォルト」を置き換えるはずです。しかし、Wikiの記事のほとんどは時代遅れですが、ThoughtWorks.CruiseControl.MsBuild.XmlLoggerはこのような文字化けした出力をもはやもたらしません。 – skolima

+0

これをあなたの執拗さに感謝します。ほんとうにありがとう。 Webダッシュボードで、「Build Build Log」を選択すると、XMLのMASSが表示されます。これは、msbuildの出力から始まり、NUnitの出力が続き、NCoverとNDependのXMLのMONSTERが続きます。これは本当の問題ですか?私はmsbuildの出力へのリンクを持っているべきですか?出力はマージされませんか?プロジェクトxmlで質問を更新しますので、私たちが行っていることをより詳細に見ることができます。 –

1

それは自分の質問に答える奇妙なビットを感じ、誰かが同じ質問を持っているので、ここでそれが私の答えに感謝かもしれないという可能性があります。

従来のロガーとは異なるロガーの使用について説明している次のページhttp://confluence.public.thoughtworks.org/display/CCNETCOMM/Improved+MSBuild+Integrationにアクセスしました(通常のロガーは、XSLT変換を実行する際にサーバーを壊す非常に大きなファイルを生成します)。

ページにはロガーとXSLTファイルが用意されており、これをCC.Netプロジェクトに組み込む方法についての簡単で明確な指示が記載されています。私はこのロガーとXSLTを試してみましたが、まだ生のXMLを取得していました。実際、すべてのXMLが1つの巨大なページにまとめられています。

2

msbuild2ccnet.xsl、および出力と結合されたロガーが記事からの出力サンプルのような何もないと私は Rodemeyer.MsBuildToCCnet.dll 1.0.0.5 CruiseControl.Net 1.4.4.83を試してみました:

Build started 
Project "" (Integration.Common.csproj target(s)): 
error CS1002: 
Build succeeded 
error CS1002: 
1 Error(s) 
0 Warning(s) 
Time elapsed 

msbuild.xslと相まってロガーとしてThoughtWorks.CruiseControl.MSBuild.dllを使用して、結果がうまく、次のとおりです。

Build started 07/16/2009 13:46:38 
Person.cs (18,53): error CS1002: ; expected 
Build FAILED 
Person.cs (18,53): error CS1002: ; expected 
1 Error(s) 
0 Warning(s) 
Time elapsed 00:00:00 
関連する問題