Я только что начал использовать CruiseControl.NET, и я испытываю затруднения при понимании, почему слияние NAnt и выводов NUnit не работает. У меня есть установка мой ccnet.config
с типичными значениями, как найдено на Google:
<merge>
<files>
<file>D:\ccnet\path1\nant-results.xml</file>
<file>D:\ccnet\path2\TestResult.xml</file>
</files>
</merge>
<xmllogger />
NAnt и ccnet являются наполовину работой: если я сознательно вставил ошибку в коде, то ccnet скажет, что сборка перестала работать. То же происходит, если я сознательно вставил провальный тест: ccnet скажет что отказавшая сборка.
Проблема состоит в том что ViewBuildReport.aspx
страница не показывает ни одного вывода от NAnt или NUnit.
Очевидно, я должен пропускать что-то, но я не знаю что. Какие-либо идеи?
Этот блок находится в вашем издательском отделе?
Вот как выглядит один из моих издателей:
<publishers>
<merge>
<files>
<file>*-results.xml</file>
</files>
</merge>
<xmllogger />
</publishers>
Я пропустил метку издателя, но добавление ничего не исправило.
Какова лучшая практика звонить Нанту и монахине из ccnet? В настоящее время у меня есть такая настройка, которая мне не нравится:
ccnet с задачей nant, а файл сборки nant использует задачи msbuild и nunit2 для компиляции и тестирования.
Трудно найти достойный пример ccnet, nant и nunit, который бы действительно объяснил, как лучше использовать их все вместе. Я запускаю ccnet как сервис, это имеет значение? Я пытаюсь сделать все как можно проще, это примерно то, что я делаю:
ccnet.config:
<tasks>
<nant>
<baseDirectory>D:\ccnet\builds\checkout\path</baseDirectory>
<buildFile>go.build</buildFile>
<targetList>
<target>test</target>
</targetList>
</nant>
</tasks>
<publishers>
<merge>
<files>
<file>D:\ccnet\builds\artifacts\path1\nant-results.xml</file>
<file>D:\ccnet\builds\checkout\path\name.dll-results.xml</file>
</files>
</merge>
<xmllogger />
</publishers>
А в go.build:
<target name="build" depends="clean">
<msbuild project="name.sln">
</msbuild>
</target>
<target name="test" depends="build">
<nunit2>
<formatter type="Xml" usefile="false" />
<test assemblyname="Tests\path\name.dll" />
</nunit2>
</target>
Если я проверю журнал сборки с панели инструментов, то вижу, что в нем есть xml вывод и от nant, и от nunit. Но это не отображается на самой приборной панели, с чего бы это? Это становится очень разочаровывающим...
Я пробовал два разных подхода: Авто-магический подход к ccnet (просто установите usefile="false" и позвольте ccnet сделать свое дело). Это не сработало.
Я также попробовал ручной подход, установите usefile="true" и затем объедините файлы nant-results.xml и name.dll-results.xml (без подстановочных знаков, просто используя точный путь к файлу, который я трижды проверял)
Это просто не имеет никакого смысла
.Альберт - Я случайно нашел ответ через некоторое время после того, как спросил. Похоже, что это поведение ccnet из коробки . Поэтому по умолчанию он не показывает результаты компиляции на веб-панели управления.
Вам нужно найти файл \ CruiseControl.NET \ webdashboard \ dashboard.config и в разделе buildReportBuildPlugin добавить compile.xsl. При добавлении это будет выглядеть так:
<buildPlugins>
<buildReportBuildPlugin>
<xslFileNames>
<xslFile>xsl\header.xsl</xslFile>
<xslFile>xsl\unittests.xsl</xslFile>
<xslFile>xsl\modifications.xsl</xslFile>
<xslFile>xsl\NCoverSummary.xsl</xslFile>
<xslFile>xsl\compile.xsl</xslFile>
</xslFileNames>
</buildReportBuildPlugin>
<buildLogBuildPlugin />
<xslReportBuildPlugin description="NCover Report" actionName="NCoverBuildReport" xslFileName="xsl\NCover.xsl"></xslReportBuildPlugin>
</buildPlugins>
Документация была очень плохой, и я нашел ее случайно, когда искал что-то еще. Я не был счастлив, что потратил так много времени, когда небольшая документация или пример на сайте ccnet помогли бы решить эту проблему за считанные минуты.