Перейти к основному содержимому

CI/CD: Краткий обзор

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

Код интегрируется и доставляется пользователю итерационно, как можно чаще. Ценность CI/CD кроется в автоматизации всех этапов интеграции и развёртывания кода.

  • CI — практика интеграции кода от разных разработчиков в общий репозиторий. Разработчики как можно чаще сливают изменения в основную ветку, используя систему контроля версий (например, Git). При этом любые изменения проходят через автоматические тесты.
  • CD — автоматизация развёртывания (доставки) кода в "прод" после успешной интеграции и тестирования.

Этапы CI/CD

  1. Код. Разработка создает код, исправляет ошибки или делает доработки, выполняет тесты, а затем отправляет в ветку master с актуальной сборкой продукта. Несколько команд могут отправить любое количество модулей в master.
  2. Сборка. Старт автоматической сборки и авто-тестов. Критерии запуска системы управления версиями и начала сборки настраиваются заранее.
  3. Тестирование. После авто-тестов выкатываемой версии проекта, можно приступать к ручной проверке.
  4. Релиз. После успешных тестов, разработчики вносят исправления и выпускают новую версию продукта.
  5. Развёртывание. Отправка финальной версии кода на боевой сервер. Взаимодействие пользователя с сервисом.
  6. Поддержка и мониторинг. Разработка мониторит работу продукта, отслеживая и анализируя пользовательский опыт.
  7. Планирование. На основе мониторинга и анализа формулируются идеи новых доработок и улучшений. Цикл начинается заново — написание кода.

Плюсы 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.

Подборка материалов

  1. Краткий обзор CI/CD
  2. Примеры инструментов
  3. Просто о CI/CD
  4. Как создать и развивать CI/CD в команде
  5. Реализация принципов Agile с помощью CI/CD
  6. CI/CD статья от Selectel
  7. Сравнение инструментов
  8. TeamCity: настраиваем CI/CD
  9. 38 лучших CI/CD-инструментов
  10. Когда и зачем нужен CI/CD
  11. CI/CD: как, зачем, для чего — статья на основе вебинара от Слёрм
  12. CI/CD: как связана с DevOps и облаками
  13. Пайплайн CI/CD
  14. Основы CI/CD. Знакомство с Jenkins

Видео

  1. CI/CD за 8 минут
  2. В прод с помощью GITLAB CI/CD. Пример
  3. CI CD наглядные примеры
  4. GITLAB CI/CD vs JENKINS
  5. CI/CD Full Course (англ)
  6. Что такое CI/CD на примере
  7. Обзор инструментов CI/CD: Gitlab CI, Docker, Ansible
  8. Github Actions - Введение в CI/CD
  9. GitlLab CI+Runners. Создание CI CD Pipeline

Книги