AgileCamp’11 Новосибирск - Continuous Integration (CI)

16
Continuous Integration Anton Katkov

description

материал с конференции http://camp.agiledays.ru

Transcript of AgileCamp’11 Новосибирск - Continuous Integration (CI)

Page 1: AgileCamp’11 Новосибирск - Continuous Integration (CI)

Continuous Integration

Anton Katkov

Page 2: AgileCamp’11 Новосибирск - Continuous Integration (CI)

Типичные сценарии

• Разработчик закомитил бажный код в репозиторий кода и ушёл домой.

• Разработчик закомитил бажный код в репозиторий и проблема была обнаружена во время Nightly Build.

Page 3: AgileCamp’11 Новосибирск - Continuous Integration (CI)

Continuous Integration

... is a software development practice where members of a team integrate their work frequently. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible.Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly.

http://martinfowler.com/articles/continuousIntegration.htmlMartin Fowler

Page 4: AgileCamp’11 Новосибирск - Continuous Integration (CI)

Вопрос

• Как CI работает на практике?

Page 5: AgileCamp’11 Новосибирск - Continuous Integration (CI)

Каковы ценности CI

• Уменьшает риски• Уменьшает число рутинных действий• Создаёт готовое для использования

приложение • Делает проект более прозрачным• Поддерживает другие инженерные

практики

Page 6: AgileCamp’11 Новосибирск - Continuous Integration (CI)

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

• Позднее исправление багов дорого• Отсутствие единства в команде• Низкое качество кода• Непрозрачность проекта• Отсутствие готового к использования

приложения

Page 7: AgileCamp’11 Новосибирск - Continuous Integration (CI)

CI уменьшает риски

• Тестирование проходит регулярно• Процесс сборки становиться простой• Обнаруживаем проблемы раньше• Уменьшаем количество «предположений»

Page 8: AgileCamp’11 Новосибирск - Continuous Integration (CI)

Почему обычно не делаем CI?

• Нет ресурсов на его поддержку• Слишком много надо поменять в

существующем процессе• Слишком много билдов проваливается• Дополнительные затраты на железо и софт• Всё равно надо делать сборку руками

Page 9: AgileCamp’11 Новосибирск - Continuous Integration (CI)

Некоторые практики CI

• Автоматизируйте сборку• Включите тесты в процесс сборки• Делайте сборку на каждое изменений в репозитории

кода• Сохраняйте процесс сборки быстрым• Тестируйте в копии реального (production) окружения• Сделайте итоговые сборки легко доступными для всех• Покажите всем, что происходит – публичность• Автоматизируйте разворачивание приложения

Page 10: AgileCamp’11 Новосибирск - Continuous Integration (CI)

Особенно важно

• Автоматизируйте всё, что можно автоматизировать

Page 11: AgileCamp’11 Новосибирск - Continuous Integration (CI)

ВЫБОР CI СЕРВЕРА

Page 12: AgileCamp’11 Новосибирск - Continuous Integration (CI)

Существующие решения

Page 13: AgileCamp’11 Новосибирск - Continuous Integration (CI)

Критерии

• Надёжный• Подходит для ваших инструментов и

технологий• Легко настраивается и поддерживается• Просто пользовательский интерфейс• Содержит необходимые функции

Page 14: AgileCamp’11 Новосибирск - Continuous Integration (CI)

SONAR

Page 15: AgileCamp’11 Новосибирск - Continuous Integration (CI)

Метрики

Page 16: AgileCamp’11 Новосибирск - Continuous Integration (CI)

Инспекции