30
Анти шаблоны непрерывной интеграции Виктор Гляненко. VIAcode

Анти шаблоны непрерывной интеграции

  • Upload
    sqalab

  • View
    643

  • Download
    2

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Анти шаблоны непрерывной интеграции

Анти шаблоны непрерывной интеграции

Виктор Гляненко. VIAcode

Page 2: Анти шаблоны непрерывной интеграции

Немного о себе

• Гляненко Виктор

• Software Test Engineer

[email protected]

Page 3: Анти шаблоны непрерывной интеграции

Непрерывная интеграция

Непрерывная интеграция (англ. Continuous Integration) — это практика разработки программного обеспечения, которая заключается в выполнении частых автоматизированных сборок проекта для скорейшего выявления и решения интеграционных проблем.

Page 4: Анти шаблоны непрерывной интеграции

Редкая синхронизация

Анти шаблон: Файлы исходного кода долго остаются без синхронизации с репозитарием из-за большого количества изменений, необходимых для решения поставленной задачи.

Решение: Чаще синхронизировать небольшие порции кода.

Page 5: Анти шаблоны непрерывной интеграции

Последствия

Внесение изменений

Локализация проблемы

Упущенное время

Нереализованный функционал

Page 6: Анти шаблоны непрерывной интеграции

Поломка

Анти шаблон: Сборка остается неработоспособной в течение длительного периода времени, тем самым мешая разработчикам загружать функционирующий код из системы контроля версий.

Page 7: Анти шаблоны непрерывной интеграции

Поломка

Решение: • Разработчики должны

быть немедленно оповещены в случае возникновения сбоя во время сборки проекта, а исправление поврежденной сборки должно стать задачей с максимальным приоритетом.

• Не вносить изменения в репозиторий при поломанной сборке

Page 8: Анти шаблоны непрерывной интеграции

Последствия

Общее время: 80Максимум: 50В среднем: 30

Человеко-часы

Page 9: Анти шаблоны непрерывной интеграции

Авось

Анти шаблон: Отсутствие выполнения локальной (собственной) сборки до загрузки кода в репозиторий системы контроля версий.

Решение: Локальная сборка проекта с обновлением кода из репозитария после внесения изменений в код непосредственно перед запуском процесса сборки.

Page 10: Анти шаблоны непрерывной интеграции

Оно работает!

Анти шаблон: Делаются частные сборки, которые работоспособны только на машине разработчика, а затем обнаруживается, что изменения не работают в других средах.

Решение: Использовать отдельный сервер для интеграционных сборок, запуская сборку при каждом изменении, внесенном в репозиторий системы контроля версий

Page 11: Анти шаблоны непрерывной интеграции

Белый шум

Анти шаблон: Отсутствие рассылаемых извещений о статусе процесса сборки проекта, из-за этого участники не узнают, что в ходе сборки проекта возникла ошибка.

Решение: Использовать различные механизмы обратной связи для информирования о статусе сборки проекта.

Page 12: Анти шаблоны непрерывной интеграции

Спам

Анти шаблон: Участники команды оказываются заваленными сообщениями о статусе процесса сборки (удачном, неудачном и всех возможных промежуточных состояниях) до такой степени, что начинают игнорировать сообщения.

Решение: Обратная связь сводится к сжатому объему важнейшей информации, чтобы люди не получали лишней информации

Page 13: Анти шаблоны непрерывной интеграции

Пример

Результат Результат

Результат Результат

Результат Результат

Результат Результат

Page 14: Анти шаблоны непрерывной интеграции

Ленивец

Анти шаблон: Если в качестве системы для сборки использовать компьютер с ограниченными ресурсами, это может привести к длительному времени сборки.

Решение: Система для сборки должна иметь оптимальные характеристики для быстрого проведения сборок проекта. Время разработчика стоит дороже обновления оборудования.

Page 15: Анти шаблоны непрерывной интеграции

Результат

Часы

В день: 4В неделю: 20Свободно: 4

В день: 2В неделю: 10Свободно: 6

Page 16: Анти шаблоны непрерывной интеграции

Перегрузка

Анти шаблон: Добавление всего подряд в процесс сборки, запускаемый после загрузки изменений в систему контроля версий.

Page 17: Анти шаблоны непрерывной интеграции

Перегрузка

Решение: Разделение сборки на условно независимые части и выполнение их параллельно.

Page 18: Анти шаблоны непрерывной интеграции

Результат

Полна

я сб

орка

Платф

орма

Мод

ульн

ая

Бинар

ный

фай

л012345678

PS3X360PC

Page 19: Анти шаблоны непрерывной интеграции

Полдник

Анти шаблон: Разработчики фиксируют изменения, сделанные за день, перед уходом в конце рабочего дня, что приводит к ошибкам интеграционной сборки и не дает членам команды вовремя уйти домой.

9.00 10.00 11.00 12.00 13.00 14.00 15.00 16.00 17.00

Интеграционная сборка

Интеграционная сборка Интеграционная сборка

Page 20: Анти шаблоны непрерывной интеграции

Полдник

Решение: Часто фиксировать изменения в коде программы на протяжении дня. В конце рабочего дня не вносить код в репозиторий

9.00 10.00 11.00 12.00 13.00 14.00 15.00 16.00 17.00

Интеграционная сборка

Интеграционная сборка Интеграционная сборка

Page 21: Анти шаблоны непрерывной интеграции

Неосведомлённость

Анти шаблон: Раз сборка прошла без ошибок, все считают, что полученное программное обеспечение работает отлично. На самом деле сборка состояла всего лишь из компиляции и тестирования нескольких модулей.

Page 22: Анти шаблоны непрерывной интеграции

Неосведомлённость

Решение: Делать полную интеграционную сборку с каждым изменением в репозитарии системы контроля версий. Проводить функциональное тестирование после сборки.

• Компиляция

• Упаковка

• Развертывание

• Компиляция• Тестирование

• Проверки• Упаковка

• Развертывание• Установка

Page 23: Анти шаблоны непрерывной интеграции

Пунктуальность

Анти шаблон: Сборки делаются ежедневно, еженедельно или по какому-либо другому графику, а не после изменений.

Page 24: Анти шаблоны непрерывной интеграции

Пунктуальность

Решение: Запускать сборку как можно чаще в течении рабочего дня.

Решение: Запускать сборку в ручную. Человек запустивший сборку отвечает за результат.

Page 25: Анти шаблоны непрерывной интеграции

Близорукая среда

Анти шаблон: Уверенность, что если сборка работает в одной среде, то заработает и в других.

Решение: Определить поведение сборки в целевых средах сборки, кроме того, выделить зависящие от среды данные в файлы свойств.

Page 26: Анти шаблоны непрерывной интеграции

Загрязненная среда

Анти шаблон: Для экономии времени запускается инкрементная сборка; однако оставшийся от предыдущей сборки артефакт дает ложно положительный (или ложно отрицательный) результат.

Решение: Перед запуском сборки удалите артефакты от предыдущей сборки. Приведите сервер и конфигурационную информацию в исходное состояние.

Page 27: Анти шаблоны непрерывной интеграции

Заключение

Если избегать некоторых анти шаблонов отдача от процесса непрерывной интеграции станет больше. Существуют веские причины к использованию некоторых из этих подходов в процессе разработки, но они могут привести к возникновению выше перечисленных проблем.

Запомните, сами по себе анти шаблоны не плохи, но в определенных ситуациях они могут быть вредны.

Page 28: Анти шаблоны непрерывной интеграции

Вопросы?

Page 29: Анти шаблоны непрерывной интеграции

Контакты:[email protected]: botikus1

Спасибо!

Page 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

Article:“Automation for the people: Continuous Integration anti-patterns”

Book:“Continuous Integration: Improving Software Quality and Reducing Risk”