Получение CruiseControl.NET для использования вывода из длительной задачи при отображении "Активность"
В CruiseControl.NET у меня есть два проекта, один для сборки и один для развертывания пакетов сборки.
Наша сборка в значительной степени основана на MSBuild, и, поскольку она работает, панель мониторинга постоянно обновляется с последними результатами сборки. Это означает, что хотя полная сборка может занять 15 минут, вы можете точно определить, где она находится, и что она делает успехи.
Развертывание выполняется с использованием другого инструмента (VisualBuild, хотя я вижу такое же базовое поведение с другими инструментами, такими как PowerShell). Это еще одна длительная задача, но в этом случае панель мониторинга не обновляется с выходными данными по мере ее продвижения. Поскольку развертывание может занять много времени, трудно сказать, идет ли речь о прогрессе или он застопорился. Вывод записывается в журнал CruiseControl.NET и будет отображаться на приборной панели, когда все будет готово, но не во время развертывания.
Есть ли способ получить выходные данные от других произвольных долгосрочных задач, обновленных на приборной панели в чем-то похожем на реальное время? Что делает MSBuild особенным в этом отношении?
1 ответ
CruiseControl.Net, начиная с версии 1.4, включает поддержку файлов прослушивателей сборки: это механизм, который позволяет отслеживать выполнение длительных задач путем чтения из файла журнала. Хотя этот механизм является общим и может использоваться с любым инструментом, CruiseControl.Net сам по себе поставляется только с прослушивателями сборок для MSBuild и NAnt (что означает, что для этих двух инструментов прогресс сообщается автоматически, без необходимости дополнительной настройки).
Для внешнего инструмента, такого как VisualBuild, вызываемого <exec>
задача, вам нужно будет подключить свой собственный регистратор, который создает простой файл прогресса:
<data>
<Item Time="2007-10-14 08:43:12" Data="Starting Build timetester" />
<Item Time="2007-10-14 08:43:16" Data="Starting Target build" />
<Item Time="2007-10-14 08:43:16" Data="Sleeping for 5000 milliseconds." />
</data>
в месте, указанном CCNetListenerFile
переменная окружения.