2009-07-15 49 views
3

我們目前不會在CC.NET(CruiseControl.Net)中格式化我們的msbuild輸出,因此,找到造成損壞的原因涉及讀取XML以找到最後的'success ='false''實例輸出。您使用什麼XSLT格式化CruiseControl.Net中的MsBuild XML輸出?

你使用什麼樣的XSLT格式化你的msbuild輸出,你對結果HTML感到滿意嗎?即你發現很容易找出造成損壞的原因嗎?

感謝 b

編輯: 這是我們的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分析結果,然後再開始從服務器獲取異常。

要在WebDashboard中查看格式化的MSBuild結果,請確保儀表板配置包括msbuild.xsl(這會給你一個指向ViewBuildReport頁面上的「MSBuild Report」的鏈接,並在頁面上包含一些基本信息)。

+0

感謝您的鏈接。我已經投了你的答案,但我不能把它標記爲一個決議......但。;) 我打開了您提供的鏈接並進行調查。我認爲自定義記錄器是一種好方法,因爲如果我寫了一個,它可以允許過濾噪聲以生成更小的日誌,這些日誌轉換更快,並且CI服務器上的耗用更少。 – 2009-07-16 07:07:10

1

感覺有點怪異回答我的問題,但有一個機會,有人可能有同樣的問題,所以這裏是欣賞我的答案。

我訪問了以下頁面http://confluence.public.thoughtworks.org/display/CCNETCOMM/Improved+MSBuild+Integration,它描述了使用與傳統記錄器不同的記錄器(正常記錄器會生成非常大的文件,這會在執行XSLT轉換時使服務器停止運行)。

該頁面提供了記錄器和XSLT文件,並提供了簡單明瞭的說明,說明如何將其納入CC.Net項目。我試過這個記錄器和XSLT,發現我仍然得到原始的XML;實際上,所有的XML都合併在一個巨大的頁面中。

2

我試圖CruiseControl.Net 1.4.4.83Rodemeyer.MsBuildToCCnet.dll 1.0.0.5如加上msbuild2ccnet.xsl一個記錄器,並且輸出是沒有像從製品上輸出樣本:

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

使用ThoughtWorks.CruiseControl.MSBuild.dll如加上msbuild.xsl一個記錄器,結果是就好:

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