Не удается заставить HtmlReportPlugin работать в CruiseControl.NET

Я пытаюсь использовать HTML-отчеты, сгенерированные моими модульными тестами, для отображения на панели управления CruiseControl.NET, но я не знаю, где я их копаю.

У меня есть отчет, созданный в «CCNetWorkingDirectory». В моем файле «CCNet.config» я использую файл Объединить задачу, чтобы скопировать отчет в мой «CCNetArtifactDirectory». Это шаг, который не работает. Я пробовал это разными способами. У меня есть:

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

Какими должны быть пути в моем файле конфигурации? Моя сборка прерывается сообщением:

«Неудачные задачи: MergeFilesTask»

Я действительно не знаю, что я делаю неправильно.


person scro    schedule 16.10.2013    source источник


Ответы (2)


Я наконец решил проблему.

В моем файле ccnet.config в узле publishers я должен скопировать report.html следующим образом:

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

Файл будет скопирован в каталог артефакта в папку с именем Build Label. Это необходимо сделать из соображений безопасности:

Местоположение источника HTML
Этот подключаемый модуль может отображать любой файл, который находится в папке сборки в папке артефактов для проекта. Он не может отображать файлы из любого другого места (по соображениям безопасности).

Чтобы отобразить отчет в формате 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.

person scro    schedule 25.10.2013

Быстрая версия:

Обратите внимание на все примеры по адресу:

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», который я называю «супер-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.

Если вы найдете файлы .xsl, которые CruiseControl.NET устанавливает для вас (или вы установили задним числом), взгляните на те, которые покажут вам, как этот .xsl преобразует XML "super-build-xml".

person granadaCoder    schedule 17.10.2013
comment
Спасибо за ваш подробный ответ. Но я понимаю слияние XML и, конечно, работаю точно так, как вы сказали. - person scro; 21.10.2013
comment
Верно. И вы пытаетесь объединить не XML-файл, он же html-файл. В этом проблема. - person granadaCoder; 21.10.2013
comment
Извините, меня прервали при написании комментария. Итак, моя проблема в том, что я не знаю, как использовать плагин отчетов HTML. Насколько я понимаю HTMLReportPlugin, я поместил html-отчет в свой рабочий каталог. Но панель CruiseControl Dashboard может отображать только html-страницы, расположенные в расположении артефактов, поэтому мне нужно использовать Задание слияния файлов, чтобы скопировать файл в папку с моими файлами. Есть ли у вас опыт работы с HTMLReportPlugin? - person scro; 23.10.2013
comment
Вы не можете использовать задачу File-Merge. Вам необходимо КОПИРОВАТЬ ваш .html файл в нужный каталог. Затем подключите HTMLReportPlugin. - person granadaCoder; 23.10.2013
comment
Ждать. Я вижу несоответствие. confluence.public.thoughtworks.org/display/CCNET/ Это говорит о том, что вы можете использовать задачу File-Merge. он не приводит пример (конечно), он просто говорит, что вы можете использовать задачу ............ - person granadaCoder; 23.10.2013
comment
confluence.public.thoughtworks.org/display/CCNET/ Это говорит о том, что я устарел ....... так что это может быть место, где есть противоречивая информация. Так что у меня нет ответа, я просто показываю несоответствие. - person granadaCoder; 23.10.2013
comment
Взгляните сюда: stackoverflow.com/questions/8056840/ - person granadaCoder; 23.10.2013
comment
Спасибо за вашу помощь @granadaCoder. Я нашел решение и разместил его ниже. - person scro; 25.10.2013