CI/CD: Краткий обзор
Continuous Integration/Continuous Delivery (непрерывная интеграция и доставка) — подход к разработке приложений, который обеспечивает автоматизацию процессов сборки, тестирования и доставки кода.
Код интегрируется и доставляется пользователю итерационно, как можно чаще. Ценность CI/CD кроется в автоматизации всех этапов интеграции и развёртывания кода.
- CI — практика интеграции кода от разных разработчиков в общий репозиторий. Разработчики как можно чаще сливают изменения в основную ветку, используя систему контроля версий (например, Git). При этом любые изменения проходят через автоматические тесты.
- CD — автоматизация развёртывания (доставки) кода в "прод" после успешной интеграции и тестирования.
Этапы CI/CD
- Код. Разработка создает код, исправляет ошибки или делает доработки, выполняет тесты, а затем отправляет в ветку master с актуальной сборкой продукта. Несколько команд могут отправить любое количество модулей в master.
- Сборка. Старт автоматической сборки и авто-тестов. Критерии запуска системы управления версиями и начала сборки настраиваются заранее.
- Тестирование. После авто-тестов выкатываемой версии проекта, можно приступать к ручной проверке.
- Релиз. После успешных тестов, разработчики вносят исправления и выпускают новую версию продукта.
- Развёртывание. Отправка финальной версии кода на боевой сервер. Взаимодействие пользователя с сервисом.
- Поддержка и мониторинг. Разработка мониторит работу продукта, отслеживая и анализируя пользовательский опыт.
- Планирование. На основе мониторинга и анализа формулируются идеи новых доработок и улучшений. Цикл начинается заново — написание кода.
Плюсы CI/CD
- Сокращение времени поставки (Time to Market): автоматизация процессов позволяет быстрее и чаще дос тавлять новые функции и исправления.
- Качество кода: автотесты обеспечивают высокое качество кода, а регулярные интеграции помогают выявлять проблемы на ранних этапах.
- Легкость масштабирования: автоматизированные процессы легко масштабируются с увеличением объемов работы.
- Однородная среда разработки: все члены команды работают в однородной среде, что упрощает совместную разработку.
Минусы CI/CD
- Сложность внедрения: реализация CI/CD требует времени и усилий для внедрения в существующие процессы разработки и обслуживания. Сложные системы CI/CD могут требовать значительных ресурсов для обслуживания.
- Трудность согласования изменений: в больших командах интеграция изменений может быть сложной.
- Безопасность: неправильная настройка CI/CD может стать источником уязвимостей.
- Не всегда применимо: когда проект слишком маленький или слишком сложный для автоматизации всех процессов.
Прог раммы для CI/CD
- Jenkins: Один из самых популярных и распространенных инструментов для CI/CD.
- GitLab CI/CD: Встроенная система CI/CD в GitLab, интегрированная с GitLab репозиториями.
- Travis CI: Облачный сервис CI/CD, легко настраиваемый для проектов на GitHub.
- CircleCI: Облачная CI/CD-платформа с широкими возможностями конфигурации.
- TeamCity: Мощный и гибкий инструмент CI/CD от JetBrains.
Подборка материалов
- Краткий обзор CI/CD
- Примеры инструментов
- Просто о CI/CD
- Как создать и развивать CI/CD в команде
- Реализация принципов Agile с помощью CI/CD
- CI/CD статья от Selectel
- Сравнение инструментов
- TeamCity: настраиваем CI/CD
- 38 лучших CI/CD-инструментов
- Когда и зачем нужен CI/CD
- CI/CD: как, зачем, для чего — статья на основе вебинара от Слёрм
- CI/CD: как связана с DevOps и облаками
- Пайплайн CI/CD
- Основы CI/CD. Знакомство с Jenkins
Видео
- CI/CD за 8 минут
- В прод с помощью GITLAB CI/CD. Пример
- CI CD наглядные примеры
- GITLAB CI/CD vs JENKINS
- CI/CD Full Course (англ)
- Что такое CI/CD на примере
- Обзор инструментов CI/CD: Gitlab CI, Docker, Ansible
- Github Actions - Введение в CI/CD
- GitlLab CI+Runners. Создание CI CD Pipeline
Книги
- Две книги по DevOps от Джена Кима: Первая в формате романа, вторая является технически более детальным продолжением.