2. Обо мне
Меня зовут Кузьмицкий Александр.
Окончил МГВРК+БГУИР ИИТ по
специальности Информационные
технологии и управление в
технических системах.
Работаю в Wargaming с 2012 года над
созданием инструментов
автоматизации и доставки ПО.
3. Continuous integration
• Непрерывная интеграция (CI, англ. Continuous Integration) — это
практика разработки программного обеспечения, которая
заключается в слиянии рабочих копий в общую основную ветвь
разработки и выполнении частых автоматизированных сборок
проекта для скорейшего выявления потенциальных дефектов и
решения интеграционных проблем.
• Результатом CI является артефакт.
4. Артефакты
Артефакт CI – результат выполнения сборки и прогона тестов,
который однозначно характеризует состояние кода и достаточен
для дальнейшей его доставки.
• Виды артефактов:
• Python package
• .rpm
• .deb
• docker image
• .json, .yaml, .ini, .xml, .txt
• bash/python/perl script
6. Схема работы CI
процесса
• Непрерывный поток изменений в VCS
• Инструментарий CI даёт оперативную
обратную связь о результатах сборки
• Не стабильный код не попадает в
стабильные ветки
7. Continuous Delivery
• Непрерывная доставка (Continuous Delivery) — это подход к
разработке программного обеспечения, при котором все
изменения, включая новые функции, изменения конфигурации и
исправления ошибок могут быть доставлены в любой момент
времени
10. Continuous Deployment
• Непрерывное развёртывание (Continuous Deployment) — это
подход построению доставки, который позволяет доставлять
проверенные изменения до пользователей сразу же после
прохождения необходимого набора тестов.
13. Стейджинги
• Стейджинги - площадки, предназначенные для поэтапной
доставки ПО до потребителей
• Требования:
• Конфигурация, аналогичная production
• Layout аналогичен production
• В зависимости от функционального назначения, требования
могут отличаться от стейджинга к стейджингу
14. Виды стейджингов
• Стейджинги для тестирования функциональности(Trunk)
• Интеграционные стейджинги(Stable)
• Стейджинги для тестирования производительности(Performance)
• Стейджинги для тестирования безопасности(Security)
• Пре-продакшен(Preproduction)
• Продакшен(Production)
16. DevOps
DevOps (акроним от англ. development и operations) — набор
практик, нацеленных на активное взаимодействие специалистов по
разработке со специалистами по информационно-
технологическому обслуживанию и взаимную интеграцию их
рабочих процессов друг в друга. Базируется на идее о тесной
взаимозависимости разработки и эксплуатации программного
обеспечения и нацелен на то, чтобы помогать организациям
быстрее создавать и обновлять программные продукты и услуги.
17. Цели DevOps
• Сокращение времени доставки релизов
• Снижение частоты отказов новых релизов
• Сокращение времени выполнения исправлений
• Уменьшение количества времени на восстановления
22. Стабильная ветка
• Локальная разработка
• Каждый следующий
коммит может
сломать код только в
development ветке
• Движение
вперёд/назад вперёд
• Стабильные состояния
срезаются в master
23. Feature branches
• Возможна совместная
работа над разными
фичами
• Development ветка
используется для
интеграции
• Стабильные состояния
срезаются в master
24. Release branches
• Возможна совместная
работа
• Development ветка
используется для
интеграции
• Стабильные состояния
срезаются в master
• Релизы выполняются
из ветки release
25. Hotfix branches
• Development ветка
используется для
интеграции
• Стабильные состояния
срезаются в master
• Релизы выполняются из
ветки release
• Экстренные исправления
мержатся с набором
исключений в
интеграционные/стабиль
ные ветки
28. Наиболее часто используемые функции
• Проверка на изменения в VCS(pull/push)
• Описание степов с набором команд в каждом
• Визуализация лога
• Указание директории для сборки артефактов
• Доступ к артефактам
• Ручные степы
• Зависимые сборки
• Параметризированные сборки
• Нотификации
• Очередь с приоритетами
• Доступ к переменным окружения
• Нотификации во внешние системы о результатах сборки
29. Как устроен Jenkins
• Архитектура с сервером и агентами
• Расширение функциональности с помощью плагинов
• OpenSource
• Программирование пайплайнов на Groovy
• BlueOcean – попытка сделать Jenkins красивым
31. Простой пайплайн
• Проверка на изменение в репозитории
• Запуск сборки с новым состоянием кода
• Запуск тестов
• Запуск доставки
• Нотификация
32. CI+CD пайплайн
• CI
• Push кода в новую ветку репозитория
• Создание Pull Request/Merge Request
• Нотификация в CI систему для запуска сборки из ветки
• Запуск сборки
• Прогон тестов
• Сохранение артефакта
• Нотификация в VCS о результатах теста
• CD
• Выбор артефакта для доставки
• Запуск доставки
• Выполнение тестов на успешную доставку
• Нотификация о результатах
34. Jenkinsfile
• Jenkinsfile позволяет описать поведение CI системы для
выполнения CI/CD задач
• Виды пайплайнов в Jenkins:
• Декларативный
• Скриптовый
36. Freestyle проект
• Один набор шагов на все ветки
• Настраивается через UI
• Подходит для простых задач вроде сборки и публикации
артефактов, доставки, выполнения задач по расписанию
• Один проект на все ветки репозитория
37. Pipeline проект
• Настраивается с помощью Jenkinsfile прямо в интерфейсе или с
помощью указания пути к файлу в репозитории
• Один проект на все ветки
38. Multibranch проект
• Настраивается с помощью Jenkinsfile
• Один билд на одну ветку. Обзор веток происходит автоматически
• Самый гибкий из всех видов проектов. Каждая ветка может
собираться по своим правилам.
39. Multiconfiguration проект
• Позволяет описать матрицу необходимых комбинаций
параметров для выполнения сборки
• Используется в проектах высокой сложности, и тестах
Доставка без участия DevOps
Как выпускает код? Кто его релизит? CI/CD – экономит время, описывает чёткие правила и контроллирует их без участия человека
Основой данной практики является постоянное попадание кода в центральный репозиторий после успешного запуска тестов. Основные цели continuous integration – поиск и устранение потенциальных проблем как можно быстрее, улучшение качества ПО и сокращение время для выпуска обновлений.
Рассказать, что происходит и показать Merge Request
Доставка без участия оперирования
Правильный CI/CD процесс
Куда развёртывать код?
Рассказать о становлении девопсов.
Девопсами называют всё, что угодно.
Методики DevOps делают простые процессы более программируемыми и динамическими. С помощью DevOps можно максимизировать предсказуемость, эффективность, безопасность и ремонтопригодность операционных процессов.
Разобрать каждый блок
Вот так может выглядеть диаграмма работы с ветками и использования CI инструментов
Где делать CI?
Когда используется?
Где делать CI?
Когда используется?
Какие плюсы и минусы?
Где делать CI?
Где делать CI?
Рассказать о мезос агентах
csrf
CD отделён от CI. Здесь необходим весь инструментарий.