CruiseControl.NET
Введение
CruiseControl.NET — средство автоматизации сборки (continuous integration) для .NET. Проект был создан как портирование под .NET java приложения CruiseControl.
- сайт http://confluence.public.thoughtworks.org/display/CCNET/ или http://sourceforge.net/projects/ccnet
- лицензия открытая, но разрабатывается коммерческой компанией ThoughtWorks
Функции
Misc
- поддержка нескольких проектов на одном сервере сборки
- поддержка timeout для некоторых операций
- сохранение состояния сборки в файл — для внутренних операций
Метки сборок
Поддерживает различные форматы меток для сборки:
- простой номер
- дата + номер
- номером итерации + номер сборки
- из проекта на другом сервере
- из другого локального проекта
Инструменты контроля версий
CruiseControl.NET включает в себе работу со многими инструментами контроля версий, их число даже больше чем в CruiseControl:
- CVS
- Subversion
- Visual Source Safe
- Visual Studio Team Foundation Server
- NULL
- Perforce
- из файловой системы
- несколько разных инструментов контроля версий
- фильты изменений на которые надо реагировать
- фильтр по файлам
- фильтр по пользователям
Сборка проекта
В CruiseControl.NET для сборки можно использовать много разных методов:
- выполнение программы
- сборка при помощи NAnt
- проекты MSBuild
- нулевая задача
- сборка из solution файла Visual Studio
Публикация результатов
В CruiseControl.NET включен большой спектр методов публикации результатов:
- Web Dashboard — веб приложение для IIS
- почтовая рассылка с различными режимами:
- всегда
- при изменении статуса
- только при сбоях
- копирование файлов из одной директории в другую
- включение XML логов сторонних программ в свои логи
- запускает сборку на другом сервере
- создание XML файла с изменениями между сборками
- сбор статистики по сборкам
Триггеры сборки
В CruiseControl.NET встроена мощная система триггеров которые управляют началом сборки:
- интервальный триггер
- фильтр по времени и дням недели
- несколько объединенных триггеров
- по сборке другого проекта
- по расписанию
- изменение страницы по указанному URL
Интеграция с внешними программами
В CruiseControl.NET можно встроить интеграцию с любой программой, если:
- программа выводит данные в XML
- написан плагин обработки этих данных для Web Dashboard
В базовом комплекте есть поддержка таких программ:
- NUnit — юнит тесты для .NET
- FxCop — проверка кода на совместимость с Microsoft .NET Framework Design Guidelines
- NCover — инструмент проверки покрытия кода тестами
- Simian — анализатор повторяемости кода
- Fitnesse — инструмент приемочного веб тестирования
- MbUnit — юнит тесты для .NET
Дополнительные модули
Web Dashboard
Это веб приложение для сервера IIS. Оно призвано отображать данные по сборкам через веб интерфейс. При помощи него можно отображать данные с разных серверов, так же можно отображать результаты работы внешних к CruiseControl.NET приложений, например:
- NAnt
- NUnit — юнит тесты для .NET
- FxCop — проверка кода на совместимость с Microsoft .NET Framework Design Guidelines
- NCover — инструмент проверки покрытия кода тестами
- Simian — анализатор повторяемости кода
- Fitnesse — инструмент приемочного веб тестирования
- MbUnit — юнит тесты для .NET
Отображает логи сборки, на которых видны предупреждения и ошибки компилятора. Вид всего приложения можно менять меняя XSL файлы при помощи которых из XML генерируется страница.
Настройка Web Dashboard
Для работы Web Dashboard нужен сервер IIS и .NET Framework версии 2. Приведенные пример настройки работает для IIS 5.1 с .NET Framework 2.0 на Windows XP, возможно будет работать с другими версиями.
И так, настройка по шагам:
- создать виртуальную папку (например ccnet) в IIS, которая смотрит на папку <CruiseControl.NET>/webdashboard
- если ставить CruiseControl.NET после IIS то это произойдет автоматически
- «зарегистрировать» ASP.NET нужной версии в IIS т. е. запустить aspnet_regiis.exe (ключ -i)
- этот файл обычно лежит тут C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe — нужна правильная версия фреймворка
- в свойствах виртуальной директории на закладке «Virtual Directory» нажать Configuration
- добавить новый маппинг файлов с заширением .aspx и .xml на файл aspnet_isapi.dll
- файл aspnet_isapi.dll обычно лежит в c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
- галка Script engine должна быть отмечена, а галка File exists не отмечена
- проверить, что файл default.aspx добавлен как документ по умолчанию для виртуальной папки
- смотри закладку «Documents» в свойствах виртуальной папки
CCTray
Небольшая программа для Windows которая «висит в трее» и показывает статус сборок на удаленном сервере. С ее помощью можно наблюдать статус нескольких сборок на разных серверах одновременно, так же можно заставлять сервер производить сборки. При изменении статуса одной из сборок показывается всплывающее окно справа внизу экрана. Очень удобна для разработчиков, всегда можно знать в каком состоянии проект.
Проблемы с кодировкой
Комментарии в SVN/CVS
У CruiseControl.NET наблюдаются серезные проблемы с кодировкой отличной от ANSI. Так комментариии к коммитам на русском языке отображаются некорректно, как в dashboard, так и в почтовой рассылке. Этот bug довольно старый и решен лишь недавно. Для корректного отображения комментариев написанных не латиницей необходимо поставить версия 1.3.0.2719. Эта версия не является релизом, но отстоит от релиза 1.3.0 по-видимому на один коммит. Взять ее можно здесь.
В версии CruiseControl.NET 1.4 данная ошибка исправлена.
Комментарии в конфигурационном файле
В конфигурационный файл CruiseControl.NET нельзя просто написать комментарий не латиницей, сервер сообщит об ошибке. Но поскольку конфигурационный файл CruiseControl.NET это полноценный XML файл это легко исправить добавив в начале файла стандартную шапку:
<?xml version="1.0" encoding="utf-8" ?>
После этого можно легко вносить комментариии в кодировке utf-8, правда комментирование в других кодировках (например windows−1251) по-прежнему будет вызывать ошибку.
Ссылки
- http://sourceforge.net/projects/ccnet — официальный сайт проекта
- http://confluence.public.thoughtworks.org/display/CCNET/ — база знаний по CruiseControl.NET на сервере компании Thoughtworks
Любые правки этой статьи будут перезаписаны при следующем сеансе репликации. Если у вас есть серьезное замечание по тексту статьи, запишите его в раздел «discussion».
Репликация: База Знаний «Заказных Информ Систем» → «CruiseControl.NET»