2009-07-15 42 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