Upload
sqalab
View
643
Download
2
Embed Size (px)
DESCRIPTION
Citation preview
Анти шаблоны непрерывной интеграции
Виктор Гляненко. VIAcode
Немного о себе
• Гляненко Виктор
• Software Test Engineer
Непрерывная интеграция
Непрерывная интеграция (англ. Continuous Integration) — это практика разработки программного обеспечения, которая заключается в выполнении частых автоматизированных сборок проекта для скорейшего выявления и решения интеграционных проблем.
Редкая синхронизация
Анти шаблон: Файлы исходного кода долго остаются без синхронизации с репозитарием из-за большого количества изменений, необходимых для решения поставленной задачи.
Решение: Чаще синхронизировать небольшие порции кода.
Последствия
Внесение изменений
Локализация проблемы
Упущенное время
Нереализованный функционал
Поломка
Анти шаблон: Сборка остается неработоспособной в течение длительного периода времени, тем самым мешая разработчикам загружать функционирующий код из системы контроля версий.
Поломка
Решение: • Разработчики должны
быть немедленно оповещены в случае возникновения сбоя во время сборки проекта, а исправление поврежденной сборки должно стать задачей с максимальным приоритетом.
• Не вносить изменения в репозиторий при поломанной сборке
Последствия
Общее время: 80Максимум: 50В среднем: 30
Человеко-часы
Авось
Анти шаблон: Отсутствие выполнения локальной (собственной) сборки до загрузки кода в репозиторий системы контроля версий.
Решение: Локальная сборка проекта с обновлением кода из репозитария после внесения изменений в код непосредственно перед запуском процесса сборки.
Оно работает!
Анти шаблон: Делаются частные сборки, которые работоспособны только на машине разработчика, а затем обнаруживается, что изменения не работают в других средах.
Решение: Использовать отдельный сервер для интеграционных сборок, запуская сборку при каждом изменении, внесенном в репозиторий системы контроля версий
Белый шум
Анти шаблон: Отсутствие рассылаемых извещений о статусе процесса сборки проекта, из-за этого участники не узнают, что в ходе сборки проекта возникла ошибка.
Решение: Использовать различные механизмы обратной связи для информирования о статусе сборки проекта.
Спам
Анти шаблон: Участники команды оказываются заваленными сообщениями о статусе процесса сборки (удачном, неудачном и всех возможных промежуточных состояниях) до такой степени, что начинают игнорировать сообщения.
Решение: Обратная связь сводится к сжатому объему важнейшей информации, чтобы люди не получали лишней информации
Пример
Результат Результат
Результат Результат
Результат Результат
Результат Результат
Ленивец
Анти шаблон: Если в качестве системы для сборки использовать компьютер с ограниченными ресурсами, это может привести к длительному времени сборки.
Решение: Система для сборки должна иметь оптимальные характеристики для быстрого проведения сборок проекта. Время разработчика стоит дороже обновления оборудования.
Результат
Часы
В день: 4В неделю: 20Свободно: 4
В день: 2В неделю: 10Свободно: 6
Перегрузка
Анти шаблон: Добавление всего подряд в процесс сборки, запускаемый после загрузки изменений в систему контроля версий.
Перегрузка
Решение: Разделение сборки на условно независимые части и выполнение их параллельно.
Результат
Полна
я сб
орка
Платф
орма
Мод
ульн
ая
Бинар
ный
фай
л012345678
PS3X360PC
Полдник
Анти шаблон: Разработчики фиксируют изменения, сделанные за день, перед уходом в конце рабочего дня, что приводит к ошибкам интеграционной сборки и не дает членам команды вовремя уйти домой.
9.00 10.00 11.00 12.00 13.00 14.00 15.00 16.00 17.00
Интеграционная сборка
Интеграционная сборка Интеграционная сборка
Полдник
Решение: Часто фиксировать изменения в коде программы на протяжении дня. В конце рабочего дня не вносить код в репозиторий
9.00 10.00 11.00 12.00 13.00 14.00 15.00 16.00 17.00
Интеграционная сборка
Интеграционная сборка Интеграционная сборка
Неосведомлённость
Анти шаблон: Раз сборка прошла без ошибок, все считают, что полученное программное обеспечение работает отлично. На самом деле сборка состояла всего лишь из компиляции и тестирования нескольких модулей.
Неосведомлённость
Решение: Делать полную интеграционную сборку с каждым изменением в репозитарии системы контроля версий. Проводить функциональное тестирование после сборки.
• Компиляция
• Упаковка
• Развертывание
• Компиляция• Тестирование
• Проверки• Упаковка
• Развертывание• Установка
Пунктуальность
Анти шаблон: Сборки делаются ежедневно, еженедельно или по какому-либо другому графику, а не после изменений.
Пунктуальность
Решение: Запускать сборку как можно чаще в течении рабочего дня.
Решение: Запускать сборку в ручную. Человек запустивший сборку отвечает за результат.
Близорукая среда
Анти шаблон: Уверенность, что если сборка работает в одной среде, то заработает и в других.
Решение: Определить поведение сборки в целевых средах сборки, кроме того, выделить зависящие от среды данные в файлы свойств.
Загрязненная среда
Анти шаблон: Для экономии времени запускается инкрементная сборка; однако оставшийся от предыдущей сборки артефакт дает ложно положительный (или ложно отрицательный) результат.
Решение: Перед запуском сборки удалите артефакты от предыдущей сборки. Приведите сервер и конфигурационную информацию в исходное состояние.
Заключение
Если избегать некоторых анти шаблонов отдача от процесса непрерывной интеграции станет больше. Существуют веские причины к использованию некоторых из этих подходов в процессе разработки, но они могут привести к возникновению выше перечисленных проблем.
Запомните, сами по себе анти шаблоны не плохи, но в определенных ситуациях они могут быть вредны.
Вопросы?
Контакты:[email protected]: botikus1
Спасибо!
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
Article:“Automation for the people: Continuous Integration anti-patterns”
Book:“Continuous Integration: Improving Software Quality and Reducing Risk”