无法让HtmlReportPlugin在CruiseControl.NET中工作

时间:2013-10-16 07:02:48

标签: continuous-integration cruisecontrol.net ccnet-config

我正在尝试使用我的单元测试生成的HTML报告在CruiseControl.NET仪表板中显示,但我不知道我在哪里发现它。

我在“CCNetWorkingDirectory”中生成了我的报告。在我的“CCNet.config”文件中,我使用File Merge Task将报告复制到我的“CCNetArtifactDirectory”。这是不起作用的步骤。我用很多不同的方式尝试过它。我有:

<publishers>
    <merge>
        <files>
            <file>
                Index.html
            </file>
            <file action="Copy">
                rep\Index.html
            </file>
        </files>
    </merge>
    <xmllogger/>
</publishers>

配置文件中的路径应该是什么?我的构建打破了消息:

  

“失败的任务:MergeFilesTask”

我真的不知道自己做错了什么。

2 个答案:

答案 0 :(得分:1)

我终于解决了这个问题。

发布商节点的 ccnet.config 文件中,我必须像这样复制report.html:

<publishers>
  <merge>
    <files>
        <file action="Copy">PathToWorkingDirectory\report.html</file>
    </files>
  </merge>
  <xmllogger />
  <artifactcleanup cleanUpMethod="KeepLastXBuilds"
                   cleanUpValue="50" />
</publishers>

该文件将被复制到工件目录中,并复制到名为Build Label的文件夹中。由于安全原因,必须这样做:

  

HTML源位置
  此插件可以显示项目的artifacts文件夹下的build文件夹中的任何文件。它无法显示来自任何其他位置的文件(出于安全原因)。

要显示HTML报告,您只需将此行添加到 dashboard.config

<htmlReportPlugin description="HRMLReport" actionName="htmlreport" htmlFileName="report.html" />

此行必须放在 buildPlugins 节点下。

<buildPlugins>
  <buildReportBuildPlugin>
    <xslFileNames>
      <xslFile>xsl\header.xsl</xslFile>
      <xslFile>xsl\modifications.xsl</xslFile>
    </xslFileNames>
  </buildReportBuildPlugin>
  <buildLogBuildPlugin disableHighlightingWhenLogExceedsKB="50"/>
  <htmlReportPlugin description="HRMLReport" actionName="htmlreport" htmlFileName="report.html" />
</buildPlugins>

执行这些步骤后,如果您在仪表板中导航到生成文件的构建,则应显示您的报告。应该有一个名为 HTMLReport 的链接。

答案 1 :(得分:0)

快速版:

请注意以下所有示例:

http://www.cruisecontrolnet.org/projects/ccnet/wiki/File_Merge_Task

是“* .xml”文件。

<merge>
  <files>
    <file>Nunit*.xml</file>
    <file>FXCop.xml</file>
    <file>resources\**\*.xml</file>
    <file>E:\CruiseControl\BuildRoot\ProjectX\**\coderesults.xml</file>
    <file>E:\CruiseControl\BuildRoot\Project*\**\Business*.xml</file>
  </files>
</merge>

你需要合并.xml,而不是.htm(l)。

版本更长:

合并任务合并~xml。

每当有构建时,都会有一个“MyBuildResults.xml”文件,我称之为“super-xml”。

如果您有一个工具(例如NUnit(console).exe),该工具将推出一个文件“NUnitTestResults.xml”。

然后,CruiseControl.NET合并任务将采用“NUnitTestResults.xml”(可操作的,它是XML)并将其“合并”到MyBuildResults.xml中(再次,XML)。

那种有道理。您可以将XML合并到其他XML中。你如何获取任何文件并将其合并到任何文件中,包括.html文件。如果你合并HTML,首先是什么?持续?中间?

现在,一旦你有了一个最终的“MyBuildResults.xml”,就会有.XSL文件将其转换为.html,显示在CruiseControl.NET项目网页中。

您会注意到CruiseControl.NET网页上的一堆链接(左侧)......其中一个是“NUnit测试结果”。但开箱即用,如果点击它,则不显示任何内容。

那是因为没有NUnitTestResults.xml“合并”到super-build-xml文件中。

如果您找到CruiseControl.NET为您安装的.xsl文件(或者您事后安装),请查看这些文件,它们将向您展示.xsl如何转换“超级构建 - 的XML” XML”。