About CI/CD

20 Created on 17 March 2025 at 06:59
  Ci\cd     Devops     It  

CI / CD (Continuous Integration / Continuous Delivery or Deployment) — это практика DevOps, которая автоматизирует процессы разработки, тестирования и развертывания приложений.

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

  • Разработчик добавил изменения и залил отдельную ветку на удаленный репозиторий.
  • В этот момент начинается CI: код проверяется на синтаксические ошибки, производится тестовая сборка, запускаются юнит тесты.
  • Если CI пройден успешно, разработчик далее открывает Merge Request в ветку dev.

CD (Continuous Delivery или Непрерывная доставка) — код после успешного тестирования автоматически подготавливается к деплою в продакшн среду.

CD расширяет концепцию CI, но добавляет этап готовности к деплою. Здесь деплой автоматизирован, но обычно требует вмешательства человека для последнего шага, чтобы обеспечить контроль качества перед продакшн.

  • Ветка с изменениями сливается в dev ветку.
  • Снова проводятся необходимые тесты.
  • Если не возникает конфликтов, происходит деплой в Staging среду.
  • Это может быть реализовано через Docker или напрямую через git.

CD (Continuous Deployment или Непрерывное развертывание) — следующий шаг после Continuous Delivery: код автоматически деплоится на продакшен без ручного вмешательства.

  • Команда тестирования проверяет приложение в staging среде.
  • Если не обнаружено ошибок, приложение деплоится в продакшн среду.
  • В продакшн среде приложение будет доступно для конечных пользователей без необходимости вмешательства команды разработчиков.

Стейджинг (Staging)

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

Цель стейджинга — убедиться, что приложение функционирует корректно в окружении, которое идентично продакшн среде.

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

Стейдж среда — это инфраструктура или сервер, где размещается приложение, которое прошло все предыдущие стадии тестирования (CI).

На стейдж-среде приложение развертывается с настройками, максимально похожими на продакшн-среду.

Авто деплой в продакшн

CD (Continuous Deployment) подходит, если:

  • Приложение микросервисное и легко откатывать изменения.
  • Релиз происходит часто (несколько раз в день).
  • Есть сильные автоматические тесты, гарантирующие, что код не сломает продакшн.
  • Компания уже настроила CI/CD и доверяет процессу.
  • Пример: Facebook.