您使用什么XSLT来格式化CruiseControl.Net中的MsBuild XML输出?

时间:2009-07-15 13:01:54

标签: xslt msbuild cruisecontrol.net

我们目前没有在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>

3 个答案:

答案 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”的链接,并在页面上包含一些基本信息)