Continuous Integration applied
[14:10] <team_member_1> lucker! Не компилиццо!
[14:10] <lucker> Сейчас проверю.
[14:12] <lucker> №»№;%%;№, Забыл добавить Source.java в SVN, обновись!
[14:12] <team_member_1> ок
[14:15] <team_member_1> о! нормально!
[14:15] <lucker> Все! Завтра ставлю Cruise Control!
И наступило завтра
[13:22] <team_member_2> lucker! Не компилиццо!
[13:25] <lucker> Сейчас проверю.
[13:26] <lucker> странно, у меня компилиццо…
[13:28] <lucker> №»№;%%;№, хто удалил Source.java из SVN???
[13:28] <team_member_3> упсссс….
[13:28] <lucker>ну ты сам понял!
[13:31] <team_member_3>готово!
[13:35] <lucker> Все! Завтра ставлю Cruise Control!
И вот сегодня наконец наступило то самое завтра, когда я поставил Cruise Control.
Просмотрев перед этим несколько статей, мне пришла в голову шальная идея попробовать luntbuild. Штука занятная, c WEB-мордой для конфигурирования. WEB-морда писана на Tapestry, причем еще тех лет - версии этак 3.x.x, что незамедлительно привело к появлению таинственной ошибки «Could not find template for page Home in locale …». Однако такое же таинственное ее исчезновение позволило мне понять, что все таки luntbuild - это не то, что нам нужно, это:
- возможности описать модульную структуру проекта
- настройка зависимостей между сборками
- создание меток (tags) сборок в SCM
- управление артефактами сборок
- многопользовательская среда и управление правами пользователей
Однако зачем нам все это? У нас используется Maven2, и модульность проекта со всеми его зависимостями и артефактами обеспечивается его средствами. К тому же релизить проект и создавать SCM-метки мы тоже планируем с его помощью. Проект у нас закрытый, хостится на внутреннем сервере, так что многопользовательская среда нам как собаке пятая нога. Поэтому нам нужно что-то иное, что просто могло бы периодически проверять изменения в SCM и, в случае чего, запускать Maven для сборки проекта и оповещать о ее результатах.
Еще одна вещь, которая сильно не понравилась в luntbuild – это то, что WEB-морда его и планировщик работают в одном процессе, т.е. планировщик пускается в среде web-container-a, от имени того же пользователя и с теми же правами что и web-container. Чем мне это мешает? Тем, что я люблю порядок! У меня есть связка Tomcat+Apache2, работающая на сервере под управлением Debian, и я хочу, что бы все web-приложения деплоились в сюда. Права на файловую систему для пользователей tomcat и apache2 сильно ограничены (чтение и запись, но запись только в папку с логами). А запуск maven2 для сборки требует наличия у процесса прав на запись в папку ~/.m2, которых мне давать tomcat-у совсем не хочется. На мой взгляд, куда правильнее было бы запускать отдельный процесс планировщика, и использовать WEB-морду для настройки его поведения/просмотра отчетов по результатам сборок. Конечно можно пускать luntbuild в standalone режиме с использованием встраемого контейнера jetty, но тогда прощай порядок!
Изменен
