我们目前没有在CC.NET(CruiseControl.Net)中格式化我们的msbuild输出,因此,找到构建中断的原因涉及读取XML以查找最后一个'success =“false”'实例输出。
您使用什么XSLT来格式化msbuild输出,并且您对生成的HTML感到满意吗?即你觉得很容易找出造成破坏的原因吗?
由于 B'/ P>
编辑: 这是我们的一个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>
答案 0 :(得分:2)
我尝试 CruiseControl.Net 1.4.4.83 与 Rodemeyer.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
答案 1 :(得分:1)
回答我自己的问题感觉有点奇怪,但是有可能有人可能有同样的问题并且感谢我的答案,所以在这里。
我访问了以下页面http://confluence.public.thoughtworks.org/display/CCNETCOMM/Improved+MSBuild+Integration,该页面描述了使用与传统记录器不同的记录器(正常记录器会产生非常大的文件,在执行XSLT转换时会导致服务器停机)。
该页面提供了记录器和XSLT文件,以及有关如何将其合并到CC.Net项目中的简单明了的说明。我尝试了这个logger和XSLT,发现我还在获取原始XML;事实上,所有XML都合并在一个巨大的页面中。
答案 2 :(得分:1)
在与开发人员进行对话之后(我被告知你链接的备用记录器已经很老了,并且不鼓励使用它),我使用的是默认的标准记录器和xslt。如果它确实给您带来了问题,请报告CruiseControl.Net Jira上的错误,越多人投票支持该代码的人就会越快投票。
“查看构建日志”是一个原始视图,除了调试构建服务器设置外不可用 - 对于我的一些项目,这几乎是5MB大,并且不会对服务器造成任何问题(尽管打开它会挂起浏览器一会儿)。 NCover可能会导致将buildlog.xml扩展到100MB以上的问题 - 如果发生这种情况,您必须使用NCoverExplorer在合并之前分析结果(但在开始从服务器获取异常之前不要打扰)。
要在WebDashboard中查看格式化的MSBuild结果,请确保仪表板配置包含msbuild.xsl(这将为您提供ViewBuildReport页面上“MSBuild Report”的链接,并在页面上包含一些基本信息)