Sergey Kotlov
unread,May 5, 2012, 5:33:34 AM5/5/12Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
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 линии и полезные советы.