Алексей Рыстенко: Continuous Integration

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

description

Доклад посвящен непрерывной интеграции и ее роли в процессе разработки проектов. В нем освещены следующие вопросы: * Как избежать проблем в интеграции? * Зачем нужны тесты? * Как организовать работу так, чтобы всегда иметь под рукой прозрачное и работающее приложение? * Как быть в курсе событий на своем проекте в любой момент времени? Также, в докладе освещены основные плюсы работы с системами непрерывной интеграции на примере Jenkins. PHP User Group Ukraine в социальных сетях: https://www.facebook.com/pug.ukraine https://vk.com/pug.ukraine https://www.linkedin.com/groups/PHP-User-Group-Ukraine-6703717

Transcript of Алексей Рыстенко: Continuous Integration

Page 1: Алексей Рыстенко: Continuous Integration

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

Page 2: Алексей Рыстенко: Continuous Integration

INTEGRATION HELL

•Код пишется всеми участниками раздельно

•Задержки в коммитах и конфликты –

обычное дело

•Билд собирается в последний момент

•Big Bang!

Page 3: Алексей Рыстенко: Continuous Integration

INTEGRATION HELL

Разработка

Page 4: Алексей Рыстенко: Continuous Integration

INTEGRATION HELL

Разработка

Page 5: Алексей Рыстенко: Continuous Integration

INTEGRATION HELL

Разработка

Page 6: Алексей Рыстенко: Continuous Integration

INTEGRATION HELL

Разработка Интеграция(и неизбежные конфликты)

Page 7: Алексей Рыстенко: Continuous Integration

INTEGRATION HELL

Разработка Интеграция(и неизбежные конфликты)

Integration Hell

Page 8: Алексей Рыстенко: Continuous Integration

ПРИМЕРЫ

Page 9: Алексей Рыстенко: Continuous Integration

THE STORY SO FAR

•XP•TDD•Итерации•Backlogs•…и проч. и проч.

Page 10: Алексей Рыстенко: Continuous Integration

ОБЩИЙ ПРИНЦИП

Создание кода

ИнтеграцияПоддержка

Alexey Rystenko
Нужен ли этот слайд?
Page 11: Алексей Рыстенко: Continuous Integration

КАК ЭТО РАБОТАЕТ?

Разработчики

Система контроля

версий

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

Сборка и компиляция

Продукт

Отчеты

Page 12: Алексей Рыстенко: Continuous Integration

СБОРКА

•Обновление исходного кода

•Компиляция и сборка?

•Любые дополнительные действия

(обновление composer, выполнение xUnit)

•Post-build hooks

Page 13: Алексей Рыстенко: Continuous Integration

ПОКРЫТИЕ ТЕСТАМИ

Page 14: Алексей Рыстенко: Continuous Integration

ДО ВНЕДРЕНИЯ ИНТЕГРАЦИИ

РАЗРАБОТКА

РУЧНАЯ ИНТЕГРАЦИ

Я

РУЧНОЕ ТЕСТИРОВАН

ИЕ

DELIVERY

Плюсы:• Нет необходимости писать тесты• Нет необходимости настраивать сервер

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

Минусы:• Отчеты, если и пишутся, то вручную• Непрозрачность состояния системы• Риск сломать что-то в «черном ящике»• Следовательно, большие затраты на

регрессивное тестирование

Page 15: Алексей Рыстенко: Continuous Integration

ПОСЛЕ ВНЕДРЕНИЯ ИНТЕГРАЦИИ

РАЗРАБОТКА

АВТОМАТИЧЕСКАЯ ИНТЕГРАЦИЯ

АВТОМАТИЧЕСКОЕ

ТЕСТИРОВАНИЕ

АВТОМАТИЧЕСКОЕ DELIVERY

Плюсы:• Прозрачность системы• Мониторинг состояния проекта• Автоматизация интеграции• Автоматическая генерация отчетов• Меньшие затраты на регрессивное

тестирование

Минусы:• Необходимость писать тесты хотя бы для

ключевой функциональности• Необходимость настраивать сервер

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

ГЕНЕРАЦИЯ ОТЧЕТОВ

Page 16: Алексей Рыстенко: Continuous Integration

НАПРИМЕР

Jenkins

•TeamCity•Team Foundation Server•QuickBuild•…тысячи их!

Page 17: Алексей Рыстенко: Continuous Integration

JENKINS

Page 18: Алексей Рыстенко: Continuous Integration

JENKINS

Page 19: Алексей Рыстенко: Continuous Integration

JENKINS

Page 20: Алексей Рыстенко: Continuous Integration

JENKINS

Page 21: Алексей Рыстенко: Continuous Integration

JENKINS

Page 22: Алексей Рыстенко: Continuous Integration

JENKINS

Page 23: Алексей Рыстенко: Continuous Integration

JENKINS

Page 24: Алексей Рыстенко: Continuous Integration

JENKINS

Page 25: Алексей Рыстенко: Continuous Integration

KEEP THINGS IN ORDER

•Репозиторий

Page 26: Алексей Рыстенко: Continuous Integration

KEEP THINGS IN ORDER

•Репозиторий•Автоматизация сборки

Page 27: Алексей Рыстенко: Continuous Integration

KEEP THINGS IN ORDER

•Репозиторий•Автоматизация сборки•Регулярное автоматическое тестирование

Page 28: Алексей Рыстенко: Continuous Integration

KEEP THINGS IN ORDER

•Репозиторий•Автоматизация сборки•Регулярное автоматическое тестирование•Регулярный коммит

Page 29: Алексей Рыстенко: Continuous Integration

KEEP THINGS IN ORDER

•Репозиторий•Автоматизация сборки•Регулярное автоматическое тестирование•Регулярный коммит•Сборка каждого коммита

Page 30: Алексей Рыстенко: Continuous Integration

KEEP THINGS IN ORDER

•Репозиторий•Автоматизация сборки•Регулярное автоматическое тестирование•Регулярный коммит•Сборка каждого коммита•Доступность информации и немедленное оповещение

Page 31: Алексей Рыстенко: Continuous Integration

KEEP THINGS IN ORDER

•Репозиторий•Автоматизация сборки•Регулярное автоматическое тестирование•Регулярный коммит•Сборка каждого коммита•Доступность информации и немедленное оповещение•Continuous deployment

Page 32: Алексей Рыстенко: Continuous Integration

KEEP THINGS IN ORDER

•Репозиторий•Автоматизация сборки•Регулярное автоматическое тестирование•Регулярный коммит•Сборка каждого коммита•Доступность информации и немедленное оповещение•Continuous deployment•Кратчайший путь к релизу

Page 33: Алексей Рыстенко: Continuous Integration

KEEP THINGS IN ORDER

•Репозиторий•Автоматизация сборки•Регулярное автоматическое тестирование•Регулярный коммит•Сборка каждого коммита•Доступность информации и немедленное оповещение•Continuous deployment•Кратчайший путь к релизу•Healthy mainline

Page 34: Алексей Рыстенко: Continuous Integration

KEEP CALM AND GO HOME

•Репозиторий•Автоматизация сборки•Регулярное автоматическое тестирование•Регулярный коммит•Сборка каждого коммита•Доступность информации и немедленное оповещение•Continuous deployment•Кратчайший путь к релизу•Healthy mainline

Page 35: Алексей Рыстенко: Continuous Integration