aida. Непрерывная интеграция на большом...

20
AIDA Непрерывная интеграция в крупном Интернет проекте

Upload: ontico

Post on 25-Jan-2015

325 views

Category:

Documents


7 download

DESCRIPTION

 

TRANSCRIPT

Page 1: AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, Олег Оямяэ (Badoo)

AIDA

Непрерывная интеграция в

крупном Интернет проекте

Page 2: AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, Олег Оямяэ (Badoo)

Automated Interactive Deploy Assistant

Page 3: AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, Олег Оямяэ (Badoo)

Содержание 1. Git

1.1 Workflow

1.2 Gitosis

1.3 GitPHP

1.4 Hooks

2. Automerge

3. Dashboard

4. JIRA. Контроль разработки

5. TeamCity - авто тесты, сборка и деплой

6. Continuous delivery

Page 4: AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, Олег Оямяэ (Badoo)

Git workflow

Master - стабильная версия кода, копия продакшена.

Каждая задача в отдельной ветке. Ветки релизов

создаются автоматически по расписанию.

Page 5: AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, Олег Оямяэ (Badoo)

Gitosis web admin

• 25+ репозиториев

• Много пользователей

• Быстрое управление

+ =

Page 6: AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, Олег Оямяэ (Badoo)

GitPHP

• CodeReview

• Gitosis

• Авторизация через JIRA

Page 7: AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, Олег Оямяэ (Badoo)

Git хуки

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

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

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

Page 8: AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, Олег Оямяэ (Badoo)

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

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

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

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

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

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

Page 9: AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, Олег Оямяэ (Badoo)

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

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

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

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

Page 10: AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, Олег Оямяэ (Badoo)

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

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

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

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

Page 11: AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, Олег Оямяэ (Badoo)

Automerge

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

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

"origin"

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

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

• Уведомление о конфликте в jabber

• Отправка отчёта

Page 12: AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, Олег Оямяэ (Badoo)

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

• Список релизов

• Списки связанных с релизами задач и их статусами

• Форма добавления патча в master или релиза

• Список патчей в master и релизы

• Применение патча непосредственно из дашборда

Page 13: AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, Олег Оямяэ (Badoo)

Взглянем на Аиду с другой стороны

Page 14: AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, Олег Оямяэ (Badoo)

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

Page 15: AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, Олег Оямяэ (Badoo)

QA • Автоматический запуск юнит тестов

• Devel

• Shot

• Staging

Page 16: AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, Олег Оямяэ (Badoo)

JIRA. Контроль разработки

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

• Критерии "готовности" задачи

• Интеграция с Git, Gitphp и Teamcity

• Автоматическое изменение статуса задач

• Нотификации

• Дополнительная информация

Page 17: AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, Олег Оямяэ (Badoo)

TeamCity - авто тесты, сборка и деплой

Page 18: AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, Олег Оямяэ (Badoo)

TeamCity - авто тесты, сборка и деплой

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

2. Сборка

3. Deploy

4. Smoke-тесты

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

6. Автотесты

Page 19: AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, Олег Оямяэ (Badoo)

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

1. Git

2. Gitosis

3. GitPHP

4. Automerge

5. DeployDashboard

6. JIRA

7. TeamCity

Continuous Delivery

В итоге:

• 70% задач на production

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

• Отсутствие рутинных

действий

Page 20: AIDA. Непрерывная интеграция на большом интернет-проекте / Владислав Чернов, Олег Оямяэ (Badoo)

Вопросы?

Vladislav Chernov e-mail: [email protected]

skype: chernovvs

Oleg Ojamäe e-mail: [email protected]

skype: oleko_dundich