Анти шаблоны непрерывной интеграции
DESCRIPTION
TRANSCRIPT
![Page 1: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/1.jpg)
Анти шаблоны непрерывной интеграции
Виктор Гляненко. VIAcode
![Page 2: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/2.jpg)
Немного о себе
• Гляненко Виктор
• Software Test Engineer
![Page 3: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/3.jpg)
Непрерывная интеграция
Непрерывная интеграция (англ. Continuous Integration) — это практика разработки программного обеспечения, которая заключается в выполнении частых автоматизированных сборок проекта для скорейшего выявления и решения интеграционных проблем.
![Page 4: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/4.jpg)
Редкая синхронизация
Анти шаблон: Файлы исходного кода долго остаются без синхронизации с репозитарием из-за большого количества изменений, необходимых для решения поставленной задачи.
Решение: Чаще синхронизировать небольшие порции кода.
![Page 5: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/5.jpg)
Последствия
Внесение изменений
Локализация проблемы
Упущенное время
Нереализованный функционал
![Page 6: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/6.jpg)
Поломка
Анти шаблон: Сборка остается неработоспособной в течение длительного периода времени, тем самым мешая разработчикам загружать функционирующий код из системы контроля версий.
![Page 7: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/7.jpg)
Поломка
Решение: • Разработчики должны
быть немедленно оповещены в случае возникновения сбоя во время сборки проекта, а исправление поврежденной сборки должно стать задачей с максимальным приоритетом.
• Не вносить изменения в репозиторий при поломанной сборке
![Page 8: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/8.jpg)
Последствия
Общее время: 80Максимум: 50В среднем: 30
Человеко-часы
![Page 9: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/9.jpg)
Авось
Анти шаблон: Отсутствие выполнения локальной (собственной) сборки до загрузки кода в репозиторий системы контроля версий.
Решение: Локальная сборка проекта с обновлением кода из репозитария после внесения изменений в код непосредственно перед запуском процесса сборки.
![Page 10: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/10.jpg)
Оно работает!
Анти шаблон: Делаются частные сборки, которые работоспособны только на машине разработчика, а затем обнаруживается, что изменения не работают в других средах.
Решение: Использовать отдельный сервер для интеграционных сборок, запуская сборку при каждом изменении, внесенном в репозиторий системы контроля версий
![Page 11: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/11.jpg)
Белый шум
Анти шаблон: Отсутствие рассылаемых извещений о статусе процесса сборки проекта, из-за этого участники не узнают, что в ходе сборки проекта возникла ошибка.
Решение: Использовать различные механизмы обратной связи для информирования о статусе сборки проекта.
![Page 12: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/12.jpg)
Спам
Анти шаблон: Участники команды оказываются заваленными сообщениями о статусе процесса сборки (удачном, неудачном и всех возможных промежуточных состояниях) до такой степени, что начинают игнорировать сообщения.
Решение: Обратная связь сводится к сжатому объему важнейшей информации, чтобы люди не получали лишней информации
![Page 13: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/13.jpg)
Пример
Результат Результат
Результат Результат
Результат Результат
Результат Результат
![Page 14: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/14.jpg)
Ленивец
Анти шаблон: Если в качестве системы для сборки использовать компьютер с ограниченными ресурсами, это может привести к длительному времени сборки.
Решение: Система для сборки должна иметь оптимальные характеристики для быстрого проведения сборок проекта. Время разработчика стоит дороже обновления оборудования.
![Page 15: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/15.jpg)
Результат
Часы
В день: 4В неделю: 20Свободно: 4
В день: 2В неделю: 10Свободно: 6
![Page 16: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/16.jpg)
Перегрузка
Анти шаблон: Добавление всего подряд в процесс сборки, запускаемый после загрузки изменений в систему контроля версий.
![Page 17: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/17.jpg)
Перегрузка
Решение: Разделение сборки на условно независимые части и выполнение их параллельно.
![Page 18: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/18.jpg)
Результат
Полна
я сб
орка
Платф
орма
Мод
ульн
ая
Бинар
ный
фай
л012345678
PS3X360PC
![Page 19: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/19.jpg)
Полдник
Анти шаблон: Разработчики фиксируют изменения, сделанные за день, перед уходом в конце рабочего дня, что приводит к ошибкам интеграционной сборки и не дает членам команды вовремя уйти домой.
9.00 10.00 11.00 12.00 13.00 14.00 15.00 16.00 17.00
Интеграционная сборка
Интеграционная сборка Интеграционная сборка
![Page 20: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/20.jpg)
Полдник
Решение: Часто фиксировать изменения в коде программы на протяжении дня. В конце рабочего дня не вносить код в репозиторий
9.00 10.00 11.00 12.00 13.00 14.00 15.00 16.00 17.00
Интеграционная сборка
Интеграционная сборка Интеграционная сборка
![Page 21: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/21.jpg)
Неосведомлённость
Анти шаблон: Раз сборка прошла без ошибок, все считают, что полученное программное обеспечение работает отлично. На самом деле сборка состояла всего лишь из компиляции и тестирования нескольких модулей.
![Page 22: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/22.jpg)
Неосведомлённость
Решение: Делать полную интеграционную сборку с каждым изменением в репозитарии системы контроля версий. Проводить функциональное тестирование после сборки.
• Компиляция
• Упаковка
• Развертывание
• Компиляция• Тестирование
• Проверки• Упаковка
• Развертывание• Установка
![Page 23: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/23.jpg)
Пунктуальность
Анти шаблон: Сборки делаются ежедневно, еженедельно или по какому-либо другому графику, а не после изменений.
![Page 24: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/24.jpg)
Пунктуальность
Решение: Запускать сборку как можно чаще в течении рабочего дня.
Решение: Запускать сборку в ручную. Человек запустивший сборку отвечает за результат.
![Page 25: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/25.jpg)
Близорукая среда
Анти шаблон: Уверенность, что если сборка работает в одной среде, то заработает и в других.
Решение: Определить поведение сборки в целевых средах сборки, кроме того, выделить зависящие от среды данные в файлы свойств.
![Page 26: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/26.jpg)
Загрязненная среда
Анти шаблон: Для экономии времени запускается инкрементная сборка; однако оставшийся от предыдущей сборки артефакт дает ложно положительный (или ложно отрицательный) результат.
Решение: Перед запуском сборки удалите артефакты от предыдущей сборки. Приведите сервер и конфигурационную информацию в исходное состояние.
![Page 27: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/27.jpg)
Заключение
Если избегать некоторых анти шаблонов отдача от процесса непрерывной интеграции станет больше. Существуют веские причины к использованию некоторых из этих подходов в процессе разработки, но они могут привести к возникновению выше перечисленных проблем.
Запомните, сами по себе анти шаблоны не плохи, но в определенных ситуациях они могут быть вредны.
![Page 28: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/28.jpg)
Вопросы?
![Page 30: Анти шаблоны непрерывной интеграции](https://reader036.vdocuments.mx/reader036/viewer/2022062616/54993ec7b47959ea138b4579/html5/thumbnails/30.jpg)
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”