В связи с нашими разработками, в том числе кроссплатформенных приложений, я озаботился возможностью как-то организовать процесс компиляции, прохождения unit-тестов, различных артефактов разработки, например, документации по коду. Полезно иметь такую вещь: часть программистов использует Windows, там не все утилиты работают нормально или их настроить бывает непросто. Ну и оттестировать своё приложение нескольких архитектурах после каждого комита бывает непросто.
После небольшого осмотра того, что нам может предложить Internet из open-source проектов были отобраны кандидаты на роль continuous integration-средства:
Cruise Control самый сложный, вроде бы самый первый проект в этой области, с различными возможностями, настройками, плагинами и т.п. Но меня оттолкнула необходимость ставить Java, настраивать её, еще какой-нибудь Servlet-контейнер. BuildBot вроде бы работоспобен, но некрасивый (а это, по-моему, очень важно, средство должно быть не только удобным, но и красивым, это очень мотивирует на использование).
Мы очень активно в своих проектах используем Trac, а Bitten как раз с ним интегрирован, это подкупает. Он красивый, расширяемый, написан на питоне, а этот язык является одним из основных в нашей работе. Единственный минус - проект полузаброшенный, работающая версия - это trunk в репозитории, однако есть некоторый community, который достаточно активно пытается поддерживать проект. Всё это в сумме несмотря на указанный недостаток склонило чашу весов с сторону Bitten.
У нас Trac 0.10.x, Bitten установился без проблем, нужно было только заметить, что URL страницы с информацией выглядит как /build/, а вот клиент билда (buildslave) должен обращаться на /builds/ (легко промахнуться). У нас на траке была HTTP-авторизация, и пришлось для успешного коннекта buildslave поставить в апаче HTTP-авторизацию не только на URL /login/, но и на /builds/. После этого всё заработало без проблем, оставалось только настраивать последовательность команд для buildа проекта, архитектуры, запускать побольше buildslave на машинах с разной архитектурой.
В планах добавить побольше команд для рализличных вариантах buildа, парсинге результатов юнит-тестирования, code-coverage, архивирования артефактов (например, скомпилированных приложений, документации по коду).
Comments
Comments powered by Disqus