Доклад Владислава Чернова на SQA Days 2013. "Continuous delivery в...

Post on 14-Jun-2015

479 views 1 download

Tags:

description

При построении Continuous delivery в крупном интернет проекте возникает огромное количество проблем. Мы рассказали как автоматизировать этот процесс и улучшить качество выпускаемого продукта. Также вы узнаете: 1) Бизнес, лимит времени и много рутинных действий как основная мотивация для автоматизации процесса. 2) Как верно простроить и автоматизировать процесс разработки и тестирования. 3) AIDA. Наш собственный инструмент автоматизации. 4) Автоматизация рутинные операции в системе контроля версий. 5) Continuous integration как основной шаг к Continuous delivery. 6) Наш подход к интеграции системы контроля версий, баг трекера и CI сервера. 7) Почему мы используем собственный утилиты для запуска и прогона автотестов. И конечно про основные “грабли” на которые мы наступали при автоматизации процесса.

transcript

Continuous delivery в крупном интернет

проекте

Владислав ЧерновRelease Engineer

Git Flow

Gitosis web admin● 25+ репозиториев● Много пользователей● Быстрое управление

GitPHP

● CodeReview

● Gitosis

● Авторизация через Crowd

Git хуки

● Контроль над разработчиками

● Помощь разработчикам

● Уведомления

Запрещающие хуки

● Невалидный код

● Код не по стандартам

● Нерешённые конфликты

● Неправильное имя ветки

● Проверка прав на пуш

Хуки нотификаций

● Рассылают уведомления в джабер

● Рассылают письма с диффами

● Оставляют комментарии в JIRA

Системные хуки

● Связывают задачи с релизами

● Заполняют поля в JIRA

● Изменяют статусы в JIRA

Automerge

● Выборка готовых к выкладке задач из JIRA

Automerge

● Выборка готовых к выкладке задач из JIRA

● Проверка существования ветки задачи в remote "origin"

Automerge

● Выборка готовых к выкладке задач из JIRA

● Проверка существования ветки задачи в remote "origin"

● Проверка связанности задачи с другими задачами

Automerge

● Выборка готовых к выкладке задач из JIRA

● Проверка существования ветки задачи в remote "origin"

● Проверка связанности задачи с другими задачами

● Попытка мержа ветки задачи в релиз

Automerge

● Выборка готовых к выкладке задач из JIRA

● Проверка существования ветки задачи в remote "origin"

● Проверка связанности задачи с другими задачами

● Попытка мержа ветки задачи в релиз● Уведомление о конфликте в jabber

Automerge

● Выборка готовых к выкладке задач из JIRA

● Проверка существования ветки задачи в remote "origin"

● Проверка связанности задачи с другими задачами

● Попытка мержа ветки задачи в релиз● Уведомление о конфликте в jabber● Отправка отчёта

Automerge

- ???? - PROFIT!

DeployDashboard - веб интерфейс AIDA

● Управление релизами

● Статусы задач

● Применение патчей

Контроль качества

Этапы тестирования● Code review● Автоматический запуск юнит тестов● Devel● Shot● Staging● Опциональное тестирование на production

Интеграция и автоматизация в баг-трекере:

● Критерии "готовности" задачи● Интеграция с Git, Gitphp и Teamcity● Автоматическое изменение статуса задач● Нотификации● Дополнительная информация

Continuous integration

1. Настройка проекта

2. Сборка

3. Deploy

4. Smoke-тесты

5. Откат сборки

6. Автотесты

Continuous Delivery

TeamCity

Автоматизация

GitPHP

Gitosis

Git

AIDA

JIRA

DeployDashboard

PROFIT!!!!

● 70% задач на production в течении суток

● Формирование релиза

● Отсутствие рутинных действий

Вопросы?

Владислав ЧерновE-mail: v.chernov@corp.badoo.com

Skype: chernovvsTwitter: @BadooDev

Habrahabr: bit.ly/BadooHabr