Поддержи Openmeetings

пятница, 30 апреля 2010 г.

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

Наша команда предлагает услугу организации и поддержания процесса непрерывной интеграции на вашем сервере или в облаке.

Непрерывная интеграция — практика частой автоматической сборки проекта, позволяющая сократить временной разрыв от момента возникновения ошибки в репозитории исходного кода до её исправления. Сборка после каждого изменения является логичным продолжением практик пре-коммит тестирования, ночных сборок и регулярных тестовых прогонов.

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

Составляющие непрерывной интеграции

Успешный проект непрерывной интеграции отличает от неуспешного степень соответствия основной задаче: послать программисту сообщение о том, что в процессе интеграции не всё гладко. Опытный инженер интеграции разделит эту задачу на следующие составляющие.

Быстрая сборка

Большие проекты могут собираться сутками. При непрерывной интеграции необходим, по возможности, быстрый результат. Если разбить проект на отдельные модули (пакеты), то можно пересобирать только изменившиеся, а остальные брать готовыми из последней успешной сборки. Необходимым требованием к быстрой сборке является автоматизация процесса — весь проект должен собираться одной кнопкой.

Адаптивный объем тестирования

Тесты должны быть быстрыми, невосприимчивыми к случайным изменениям окружения, и хорошо покрывающими изменяющуюся функциональность. Так, например, для тестирования конкретного изменения эффективнее проверить стиль изменившегося кода, прогнать все модульные тесты для измененного модуля, в остальном ограничиться системными тестами высокого уровня. Как и в случае сборки, необходимо реализовать возможность запускать разные группы тестов простыми командами. Всю тестовую базу надо тоже прогонять регулярно, и хорошее время для этого — ночные тестовые прогоны.

Стабильное окружение

Стрессовое тестирование важно для проектов, но интеграционная сборка — не время проверять продукт на надёжность и функционирование в необычных условиях. Необходимо обеспечить повторяемость условий и наличие ресурсов для каждой сборки, выделив для непрерывной интеграции отдельный сервер или виртуальную машину, где не запускается более одного тяжёлого процесса в параллель. Если сервер не справляется с объемами тестирования, то поможет программный кластер.

Люди

Нет ничего бессмысленнее работающей непрерывной интеграции, если результаты её работы не принимаются во внимание людьми. Необходимо договориться, что если разрушена целостность системы, то надо немедленно принимать меры — откатывать изменение, чинить проблему, или исключать сломанную функциональность из регулярного процесса интеграции, если быстро починить проблему невозможно. Система непрерывной интеграции не является заменой пре-коммит тестированию своих изменений перед отправкой кода в общий репозиторий.

Программное обеспечение

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

Создание дистрибутива

Результатом процесса непрерывной интеграции должен быть проверенный дистрибутив проекта (пакета) с меткой ревизии кода. Подобный дистрибутив может использоваться, как исходная точка в регулярных ночных прогонах тестов. Дистрибутив, прошедший полное тестирование на всех платформах, становится успешным кандидатом на роль очередной версии продукта.

Плюсы

Какие плюсы даёт внедрение подобной практики?

  • В совокупности с ночными прогонами тестов, непрерывная интеграция позволяет держать руку на пульсе качества проекта.
  • Непрерывная интеграция + дисциплина = повышение ответственности людей за свои изменения.
  • Наконец, в проекте всегда есть последняя успешная сборка, и метка, из какой ревизии она была построена. Другими словами, всегда есть, что показать заказчику, и чем занять тестировщика.

Цена

Цена организации непрерывной интеграции складывается из количества необходимых вычислительных ресурсов и стоимости рабочего времени профессионального инженера интеграции. Договоримся!

Комментариев нет :

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