Слайд 2Программа
Что такое Continuous Integration?
Риски процесса разработки
От «Continuous Integration» к «Build Pipeline»
Quality Control
Практические
![Программа Что такое Continuous Integration? Риски процесса разработки От «Continuous Integration» к](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473327/slide-1.jpg)
моменты реализации
Слайд 3Что такое Continuous Integration?
«Process of applying quality control during development» (с)wikipedia
Стратегия разработки,
связанная
![Что такое Continuous Integration? «Process of applying quality control during development» (с)wikipedia](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473327/slide-2.jpg)
с регулярной интеграцией,
проводимой в автоматическом режиме
Слайд 4Производство программных
продуктов –
рискованное дело
![Производство программных продуктов – рискованное дело](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473327/slide-3.jpg)
Слайд 5Риск 1: Поздняя интеграция стоит дорого
Атомарные изменения
Интегрируемся чаще!
![Риск 1: Поздняя интеграция стоит дорого Атомарные изменения Интегрируемся чаще!](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473327/slide-4.jpg)
Слайд 6Риск 2: Отсутствие регулярных сборок
Продукт работает только локально
Локально всё работает!
Завтра приедет босс,
![Риск 2: Отсутствие регулярных сборок Продукт работает только локально Локально всё работает!](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473327/slide-5.jpg)
показывать нечего!
Процесс непрозрачен
Какой сейчас статус проекта?
Что мы такого сделали в версии 1.0.1?
Слайд 7Интеграция необходима
Хотелось бы иметь что-то вроде
Что дальше?
![Интеграция необходима Хотелось бы иметь что-то вроде Что дальше?](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473327/slide-6.jpg)
Слайд 8От «Continuous Integration» к «Build Pipeline»
«Automated manifestation of your process for getting
![От «Continuous Integration» к «Build Pipeline» «Automated manifestation of your process for](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473327/slide-7.jpg)
software from version control into the hands of your users»
Continuous Integration flow
Build Pipeline flow
Слайд 9Build Pipeline: Как это организовать?
Специальные инструменты для поддержки процесса
… cегодня про это
![Build Pipeline: Как это организовать? Специальные инструменты для поддержки процесса … cегодня про это не говорим](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473327/slide-8.jpg)
не говорим
Слайд 10Build Pipeline: Quality Control
Сконцентрируемся на QC
Какие для этого предпосылки?
К фазе QC доступны
![Build Pipeline: Quality Control Сконцентрируемся на QC Какие для этого предпосылки? К](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473327/slide-9.jpg)
все необходимые артефакты (binaries)
Билд готов к тестированию!
Как его организовать?
Есть проблемы
и есть решения
Слайд 11Проблема 1: Слишком много продуктов
Много продуктов -> cлишком большая энтропия
Все продукты разные
![Проблема 1: Слишком много продуктов Много продуктов -> cлишком большая энтропия Все](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473327/slide-10.jpg)
-> разные инструменты
Нужны:
Правила организации тестов
Единая система управления разнородными тестами
Слайд 12Решение 1: Слишком много продуктов
Основные шаги – общие для всех
Идём от алгоритма
Что
![Решение 1: Слишком много продуктов Основные шаги – общие для всех Идём](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473327/slide-11.jpg)
нужно?
Собрать конфигурацию приложения (build)
Запустить конфигурацию (deploy + start)
Запустить тесты (test)
Собрать отчёт (collect logs)
Остановить конфигурацию (stop + undeploy)
Отделяем управление от реализации
Слайд 13Система управления тестами: Алгоритм
Вся специфика тестируемых приложений спрятана в специальном handler-е
![Система управления тестами: Алгоритм Вся специфика тестируемых приложений спрятана в специальном handler-е](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473327/slide-12.jpg)
Слайд 14Система управления тестами: Последовательность тестов
Основа – файловое дерево
Алгоритм обхода – итерирование на
![Система управления тестами: Последовательность тестов Основа – файловое дерево Алгоритм обхода –](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473327/slide-13.jpg)
одном уровне
Простота!
Слайд 15Система управления тестами: Мониторинг
Единая WEB консоль CI сервера
![Система управления тестами: Мониторинг Единая WEB консоль CI сервера](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473327/slide-14.jpg)
Слайд 16Build Pipeline: Бесплатное приложение
Ручной redeploy дорог
Можно ли его автоматизировать?
Можно
Меняем местами шаги
![Build Pipeline: Бесплатное приложение Ручной redeploy дорог Можно ли его автоматизировать? Можно](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473327/slide-15.jpg)
start <-> stop
Создаём технический сценарий без тестов
В итоге:
Приложение всегда up-to-date и готово к тестированию
… и к показу боссу ☺
Слайд 17Проблема 2: Продукт слишком сложен
Продукт слишком сложный, но нужны интеграционные тесты
Разбираем его
![Проблема 2: Продукт слишком сложен Продукт слишком сложный, но нужны интеграционные тесты](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473327/slide-16.jpg)
на части, сохраняя общую структуру,
Собираем каждый компонент в режиме redeploy
Запускаем интеграционные тесты из общей точки входа
Слайд 18Итоги
Что мы добились
Разрешение всех рисков
Покрытие всех продуктов компании
+ Помощь в ручном тестировании
С
![Итоги Что мы добились Разрешение всех рисков Покрытие всех продуктов компании +](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/473327/slide-17.jpg)
небольшими недостатками
Поддержка непростой инфраструктуры
Необходимость отдельных серверов
Зачем тестировать самому, если CI всё проверит сам? ☺