Задача Cruisecontrol с может выполняться, даже если Soursecontrol недоступен
Я развернул сервер CruiseControl.Net (Версия 1.6.7981.1), и он выполняет следующие задачи:
- Построить триггер
- Labeller
- Блок Soursecontrol VSTS (Получить код источника с сервера TFS 2010)
- Сборка кода в режиме отладки
- Запустить тест NUnit с помощью задачи Nanat
- Объединить NUnit-Result.xml (задача издателя)
Поскольку мне нужно очищать файл NUnit-Result.xml каждый раз перед запуском задачи NUnit, я добавил задачу удаления в файл Nant.build, которая удаляет файл NUnit-results.xml перед запуском задачи NUnit.
Теперь моя проблема заключается в том, что когда моя сборка получает триггеры и если мой TFS-сервер недоступен, сборка получает сбой, и запускается только задача издателя, поэтому объединение файла результатов Old Nunit в неудачной сборке.
Я пытался запустить задачу "Prebuild", но она работает, только если TFS-сервер доступен.
Теперь то, что я хочу, это задача удаления файла Nunit-result.xml, который может выполняться, даже если моя TFS недоступна (либо до блока soursecontrol, либо внутри / после блока издателя)
заранее спасибо
3 ответа
Другой вариант - создать задачу для запуска до запуска задачи nunit, которая удаляет файл nunit-result.xml.
Например, выполнить cmd /c "del NUnit-Result.xml"
Вы можете добавить задачу exec для удаления файла в разделе издателей непосредственно перед слиянием файла.
Как это:
<publishers>
<xmllogger />
<statistics />
<buildpublisher>
<sourceDir>$(buildDir)\_PublishedWebsites\$(projectName)</sourceDir>
<publishDir>$(webDir)</publishDir>
<useLabelSubDirectory>false</useLabelSubDirectory>
<alwaysPublish>false</alwaysPublish>
</buildpublisher>
<exec>
<executable>$(workingDir)\deleteNunitResultxml.cmd</executable>
</exec>
...
</publishers>
В конце найдите издателя, который перемещает файл результатов nunit или удаляет его. Тогда его не будет для следующей сборки.