В связи с нашими разработками, в том числе кроссплатформенных приложений, я озаботился возможностью как-то организовать процесс компиляции, прохождения unit-тестов, различных артефактов разработки, например, документации по коду. Полезно иметь такую вещь: часть программистов использует Windows, там не все утилиты работают нормально или их настроить бывает непросто. Ну и оттестировать своё приложение нескольких архитектурах после каждого комита бывает непросто. После небольшого осмотра того, что нам может предложить Internet из open-source проектов были отобраны кандидаты на роль [continuous integration](http://en.wikipedia.org/wiki/Continuous_Integration)-средства: * [Cruise Control](http://cruisecontrol.sourceforge.net/) * [BuildBot](http://buildbot.net/trac) * [Bitten](http://bitten.edgewall.org/) Cruise Control самый сложный, вроде бы самый первый проект в этой области, с различными возможностями, настройками, плагинами и т.п. Но меня оттолкнула необходимость ставить Java, настраивать её, еще какой-нибудь Servlet-контейнер. BuildBot вроде бы работоспобен, но некрасивый (а это, по-моему, очень важно, средство должно быть не только удобным, но и красивым, это очень мотивирует на использование). Мы очень активно в своих проектах используем [Trac](http://trac.edgewall.org), а Bitten как раз с ним интегрирован, это подкупает. Он красивый, расширяемый, написан на питоне, а этот язык является одним из основных в нашей работе. Единственный минус - проект полузаброшенный, работающая версия - это trunk в репозитории, однако есть некоторый community, который достаточно активно пытается поддерживать проект. Всё это в сумме несмотря на указанный недостаток склонило чашу весов с сторону Bitten. У нас Trac 0.10.x, Bitten установился без проблем, нужно было только заметить, что URL страницы с информацией выглядит как /build/, а вот клиент билда (buildslave) должен обращаться на /builds/ (легко промахнуться). У нас на траке была HTTP-авторизация, и пришлось для успешного коннекта buildslave поставить в апаче HTTP-авторизацию не только на URL /login/, но и на /builds/. После этого всё заработало без проблем, оставалось только настраивать последовательность команд для buildа проекта, архитектуры, запускать побольше buildslave на машинах с разной архитектурой. В планах добавить побольше команд для рализличных вариантах buildа, парсинге результатов юнит-тестирования, code-coverage, архивирования артефактов (например, скомпилированных приложений, документации по коду). ### Скриншоты #### Страница со статусом билда #### Настройка билда