Прочитал на хабре "Введение в Continuous Integration". Мне кажется неправильной сама идея коммитить что попало, а потом мастерить роботов, которые будут периодически всё это тестировать и рассказывать о неудачах. Если основная идея в том, чтобы исходный код всегда был работоспособен, такой робот просто бесполезен, и даже чтобы максимально быстро неполадки обнаруживать, будет эффективнее тестировать перед коммитом, а не после.
У нас используется Mercurial, который позволяет писать хуки для многих событий. В частности, перед коммитом проверяется синтаксис изменённых файлов, перед выталкиванием накопленных изменений в репозиторий запускаются тесты. Если что-то не так, операция прерывается. Таким образом, в репозиторий просто не попадает код, который всё сразу ломает. Для предотвращения логических ошибок, которые тестами не отслеживаются, есть стабильная и нестабильная ветка исходного кода.
Допускаю, что в больших проектах компиляция может занимать так долго, что никому не захочется перед каждым выталкиванием это делать. Но и это, мне кажется, от неправильной организации: (1) выталкивать надо не после каждого изменения, и (2) правильное разделение проекта на модули решает эту проблему. И, в любом случае, времени на сборку вряд ли уйдёт больше, чем на разруливание хаоса, возникшего в связи с пропущенной в репозиторий поломкой.
0 коммент.:
Отправить комментарий