отчет по встрече AgilePiter "Непрерывная интеграция и развертывание"

33 views
Skip to first unread message

Sergey Kotlov

unread,
May 5, 2012, 5:33:34 AM5/5/12
to agilesoftwar...@googlegroups.com, byko...@gmail.com, Gregory.k...@gmail.com, akira...@yandex-team.ru, i...@yandex-team.ru, karav...@yandex-team.ru, denni...@yandex.ru, khachatr...@gmail.com, vadim-l...@yandex.ru, oneha...@gmail.com, Dmitry Neverov, Татьяна Васильева, Michael Karpov
Всем привет!

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

Наибольший интерес вызвал доклад Дмитрия Неверова из JetBrains о том, как тестируется и разворачивается TeamCity. Мы узнали, что:
  • Как сервер непрерывной интеграции используется сам TeamCity (кто бы сомневался :-) ).
  • Большинство тестов - интеграционные;
  • Повсеместно используется такая фича TeamCity, как персональные билды, что позволяет сократить число упавших сборок;
  • В одну сборку обычно входит множество изменений и, если билд падает, то разбираться, какие изменения положили тесты, должен менеджер проекта (хотя разработчики - люди ответственные, и сами начинают копаться, когда им приходит уведомление об упавшем билде);
  • Feature branches применяются не очень часто. Больше предпочитают feature switches.
  • Обновления выкатываются 1-2 раза в день на внутренние интеграционные сервера, поэтому к выпуску новой версии она уже протестирована другими командами JetBrains;
  • Для обновления самого TeamCity на серверу установлен агент, который его тушит, а затем заново запускает;
  • Сам апдейт оформлен как билд TeamCity, это позволяет отследить историю апдейтов, понять какие новые изменения вошли в развёрнутый билд, использовать такой билд-апдейт в цепочках билдов.

Затем Артем Кошелев из Яндекса рассказал о том, как устроена их система автоматического тестирования портальных сервисов. Мы узнали, что:

  • Большинство тестов написаны на Java, также используются Python и Perl;
  • Сервер непрерывной интеграции - Jenkins;
  • Как только тесты попадают в репозиторий, запускается процесс сборки, по окончанию готовые библиотеки и тесты кладутся в maven-репозиторий;
  • В процессе сборки исходные коды проверяются на соответствие стилям кодирования, на дублирование кода и другие стандартные эвристики. Сформированные отчеты выкладываются в Sonar (http://www.sonarsource.org/).
  • Тесты запускаются в ручную нажанием одной кнопки, либо по крону, либо http-запросом (позволяет интегрироваться с CI-системами разработки);
  • После запуска необходимые тесты и библиотеки выгружаются из maven-репозитория и развертываются на кластере, на котором они уже непосредственно прогоняются.
  • Для тестирования интерфейсов используется selenium;
  • Большинство машин с selenium работают под linux;
  • Перед началом тестирования разработчик, в большинстве случаев, должен на своей рабочей машинке развернуть систему, пригодную для выполнения тестирования.

Выступавшим последним Сергей Котлов из RealWeb рассказал о процессе непрерывной интеграции и развертывания их системы. Мы узнали, что:

  • Скрипты развертывания написаны на gant (хотя на linux его использовать не советовали);
  • Сервер непрерывной интеграции - TeamCity;
  • Unit и приемочные тесты - на php. Для интеграции с сервером интеграции написаны listeners.
  • Для приемочных тестов используется selenium;
  • Идет внедрение fitness (http://fitnesse.org/), т.к. тестировщикам сложно писать автоматические тесты на php;
  • Активно используются feature branches, основная рабочая ветка сохраняется стабильной;
  • Процесс тестирования и развертывания на локальные тестовые сервера запускается при каждом коммите в основную ветвь;
  • Т.к. система на php, то результат билда системы - архив (набор архивов), содержащий все необходимые файлы для работы системы на конкретной физической машине. Затем архив закачивается на нужный сервер(-а), распаковывается, обновляется база данных и происходит перелинковка на новую версию.
  • Стабильная версия развертывается на локальные сервера автоматически, как только меняется ее номер в TeamCity;
  • На боевые сервера система развертывается по нажатию кнопки.

По окончанию докладов было "нападение" ребят из OpenWay на Дмитрия и Евгения из JetBrains, но это я оставлю за кадром.

Результат встречи:

  • есть желание встретиться еще;
  • для волнующих проблем и обмена мнениями создана группа (www.linkedin.com/groups?gid=4425754) как более удобное средство тематического общения, чем google группа. Google группа остается главным средством информирования о новых встречах и событиях.
  • фотки (к сожалению, не очень хорошего качества) доступны по адресу: http://fotki.yandex.ru/users/sery0ga/album/218921/ (было предложение выложить их в picasa, но я выбрал отечественного производителя, т.к. не нужно было ничего себе на комп закачивать).

Вроде бы все. Надеюсь, ничего важного и интересного я не упустил.

До встречи,

Сергей

ЗЫ:  от себя - большое человеческое спасибо Мише Карпову и Валерии Андриановой за агитацию народных масс, Тане Васильевой - за прекрасное помещение на 14 линии и полезные советы. 

 

Reply all
Reply to author
Forward
0 new messages