2. Немного о себе
• Гляненко Виктор
• Software Test Engineer
botikus@yandex.ru
3. Непрерывная интеграция
Непрерывная интеграция (англ. Continuous Integration) — это
практика разработки программного обеспечения, которая заключается в
выполнении частых автоматизированных сборок проекта для скорейшего
выявления и решения интеграционных проблем.
4. Редкая синхронизация
Анти шаблон: Файлы исходного кода долго остаются без
синхронизации с репозитарием из-за большого
количества изменений, необходимых для решения
поставленной задачи.
Решение: Чаще синхронизировать небольшие порции
кода.
5. Последствия
Упущенное время
Нереализованный функционал
Локализация проблемы
Внесение
изменений
6. Поломка
Анти шаблон:
Сборка остается
неработоспособной в течение
длительного периода времени,
тем самым мешая
разработчикам загружать
функционирующий код из
системы контроля версий.
7. Поломка
Решение:
• Разработчики должны быть
немедленно оповещены в случае
возникновения сбоя во время
сборки проекта, а исправление
поврежденной сборки должно
стать задачей с максимальным
приоритетом.
• Не вносить изменения в
репозиторий при поломанной
сборке
8. Последствия
Общее время: 80
Максимум: 50
В среднем: 30
Человеко-часы
9. Авось
Анти шаблон: Отсутствие выполнения локальной
(собственной) сборки до загрузки кода в репозиторий
системы контроля версий.
Решение: Локальная сборка проекта с обновлением кода из
репозитария после внесения изменений в код
непосредственно перед запуском процесса сборки.
10. Оно работает!
Анти шаблон: Делаются частные сборки, которые
работоспособны только на машине разработчика, а затем
обнаруживается, что изменения не работают в других
средах.
Решение: Использовать отдельный сервер для
интеграционных сборок, запуская сборку при каждом
изменении, внесенном в репозиторий системы контроля
версий
11. Белый шум
Анти шаблон: Отсутствие рассылаемых извещений о
статусе процесса сборки проекта, из-за этого участники
не узнают, что в ходе сборки проекта возникла ошибка.
Решение: Использовать различные механизмы обратной
связи для информирования о статусе сборки проекта.
12. Спам
Анти шаблон: Участники команды оказываются заваленными
сообщениями о статусе процесса сборки (удачном, неудачном
и всех возможных промежуточных состояниях) до такой
степени, что начинают игнорировать сообщения.
Решение: Обратная связь сводится к сжатому объему
важнейшей информации, чтобы люди не получали лишней
информации
13. Пример
Результат Результат
Результат Результат
Результат Результат
Результат Результат
14. Ленивец
Анти шаблон: Если в качестве системы для сборки
использовать компьютер с ограниченными ресурсами, это
может привести к длительному времени сборки.
Решение: Система для сборки должна иметь оптимальные
характеристики для быстрого проведения сборок проекта.
Время разработчика стоит дороже обновления
оборудования.
15. Результат
Часы
В день: 4
В неделю: 20
Свободно: 4
В день: 2
В неделю: 10
Свободно: 6
16. Перегрузка
Анти шаблон: Добавление всего подряд в процесс сборки,
запускаемый после загрузки изменений в систему контроля версий.
19. Полдник
Анти шаблон: Разработчики фиксируют изменения,
сделанные за день, перед уходом в конце рабочего дня, что
приводит к ошибкам интеграционной сборки и не дает
членам команды вовремя уйти домой.
9.00 10.00 11.00 12.00 13.00 14.00 15.00 16.00 17.00
Интеграционная сборка
Интеграционная сборка Интеграционная сборка
20. Полдник
Решение: Часто фиксировать изменения в коде программы
на протяжении дня. В конце рабочего дня не вносить код в
репозиторий
9.00 10.00 11.00 12.00 13.00 14.00 15.00 16.00 17.00
Интеграционная сборка
Интеграционная сборка Интеграционная сборка
21. Неосведомлѐнность
Анти шаблон: Раз сборка
прошла без ошибок, все
считают, что полученное
программное обеспечение
работает отлично. На самом
деле сборка состояла всего
лишь из компиляции и
тестирования нескольких
модулей.
22. Неосведомлѐнность
Решение: Делать полную интеграционную сборку с каждым
изменением в репозитарии системы контроля версий.
Проводить функциональное тестирование после сборки.
• Компиляция
• Компиляция
• Тестирование
• Проверки
• Упаковка
• Упаковка
• Развертывание
• Развертывание • Установка
23. Пунктуальность
Анти шаблон: Сборки
делаются ежедневно,
еженедельно или по какому-
либо другому графику, а не
после изменений.
24. Пунктуальность
Решение: Запускать сборку
как можно чаще в течении
рабочего дня.
Решение: Запускать сборку
в ручную. Человек
запустивший сборку
отвечает за результат.
25. Близорукая среда
Анти шаблон: Уверенность, что если сборка работает в одной среде,
то заработает и в других.
Решение: Определить поведение сборки в целевых средах сборки,
кроме того, выделить зависящие от среды данные в файлы свойств.
26. Загрязненная среда
Анти шаблон: Для экономии времени запускается инкрементная
сборка; однако оставшийся от предыдущей сборки артефакт дает
ложно положительный (или ложно отрицательный) результат.
Решение: Перед запуском сборки удалите артефакты от предыдущей
сборки. Приведите сервер и конфигурационную информацию в
исходное состояние.
27. Заключение
Если избегать некоторых анти шаблонов отдача от процесса
непрерывной интеграции станет больше. Существуют
веские причины к использованию некоторых из этих
подходов в процессе разработки, но они могут привести к
возникновению выше перечисленных проблем.
Запомните, сами по себе анти шаблоны не плохи, но в
определенных ситуациях они могут быть вредны.
30. References
Paul Duvall
Paul Duvall is the CTO of Stelligent Incorporated, a consulting
firm and thought leader in helping development teams
optimize Agile software production. He is the co-author of the
Addison-Wesley Signature Series book, Continuous Integration:
Improving Software Quality and Reducing Risk
Book:
“Continuous Integration: Improving
Software Quality and Reducing Risk”
Article:
“Automation for the people: Continuous
Integration anti-patterns”