2010/02/02

О непрерывной интеграции

Прочитал на хабре "Введение в Continuous Integration". Мне кажется неправильной сама идея коммитить что попало, а потом мастерить роботов, которые будут периодически всё это тестировать и рассказывать о неудачах. Если основная идея в том, чтобы исходный код всегда был работоспособен, такой робот просто бесполезен, и даже чтобы максимально быстро неполадки обнаруживать, будет эффективнее тестировать перед коммитом, а не после.

У нас используется Mercurial, который позволяет писать хуки для многих событий. В частности, перед коммитом проверяется синтаксис изменённых файлов, перед выталкиванием накопленных изменений в репозиторий запускаются тесты. Если что-то не так, операция прерывается. Таким образом, в репозиторий просто не попадает код, который всё сразу ломает. Для предотвращения логических ошибок, которые тестами не отслеживаются, есть стабильная и нестабильная ветка исходного кода.

Допускаю, что в больших проектах компиляция может занимать так долго, что никому не захочется перед каждым выталкиванием это делать. Но и это, мне кажется, от неправильной организации: (1) выталкивать надо не после каждого изменения, и (2) правильное разделение проекта на модули решает эту проблему. И, в любом случае, времени на сборку вряд ли уйдёт больше, чем на разруливание хаоса, возникшего в связи с пропущенной в репозиторий поломкой.

0 коммент.:

Отправить комментарий

Архив блога

Обо мне

Моя фотография
Justin Forest
I work for a software company as a software engineer, in my spare time I do promotion for the Russian Industrial Scene.
Просмотреть весь профиль