2. Типичные сценарии
• Разработчик закомитил бажный код в
репозиторий кода и ушёл домой.
• Разработчик закомитил бажный код в
репозиторий и проблема была обнаружена
во время Nightly Build.
3. 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.html
Martin Fowler
5. Каковы ценности CI
• Уменьшает риски
• Уменьшает число рутинных действий
• Создаёт готовое для использования
приложение
• Делает проект более прозрачным
• Поддерживает другие инженерные
практики
6. Риски разработки
• Позднее исправление багов дорого
• Отсутствие единства в команде
• Низкое качество кода
• Непрозрачность проекта
• Отсутствие готового к использования
приложения
7. CI уменьшает риски
• Тестирование проходит регулярно
• Процесс сборки становиться простой
• Обнаруживаем проблемы раньше
• Уменьшаем количество «предположений»
8. Почему обычно не делаем CI?
• Нет ресурсов на его поддержку
• Слишком много надо поменять в
существующем процессе
• Слишком много билдов проваливается
• Дополнительные затраты на железо и софт
• Всё равно надо делать сборку руками
9. Некоторые практики CI
• Автоматизируйте сборку
• Включите тесты в процесс сборки
• Делайте сборку на каждое изменений в
репозитории кода
• Сохраняйте процесс сборки быстрым
• Тестируйте в копии реального (production)
окружения
• Сделайте итоговые сборки легко доступными для
всех
• Покажите всем, что происходит – публичность
• Автоматизируйте разворачивание приложения
13. Критерии
• Надёжный
• Подходит для ваших инструментов и
технологий
• Легко настраивается и поддерживается
• Просто пользовательский интерфейс
• Содержит необходимые функции