CI/CD
CI/CD (Continuous Integration / Continuous Delivery) — непрерывная интеграция / непрерывная доставка
Суть в одном предложении
CI/CD — это процесс автоматической сборки, тестирования и доставки кода от коммита до продакшена.
Краткое определение
CI/CD — это практика DevOps, при которой код автоматически проверяется (CI) и доставляется в окружение (CD) через настроенный пайплайн.
Оригинал и перевод
- Язык: английский
- Оригинал: Continuous Integration / Continuous Delivery
- Буквальный перевод: непрерывная интеграция / непрерывная доставка
Синонимы и варианты написания
- CI pipeline
- CD pipeline
- Автодеплой
- Deployment pipeline
Происхождение
Практика появилась в рамках Agile и DevOps для уменьшения количества ручных операций и ошибок при релизах.
Где используется
- Backend и frontend проекты
- Микросервисы
- SaaS-платформы
- Open-source проекты
- CMS (WordPress, Bitrix, Laravel, Django)
Когда это важно
CI/CD становится критичным, когда:
- релизы происходят часто
- несколько разработчиков работают параллельно
- нужен стабильный продакшен
- требуется минимизация человеческого фактора
Подробное объяснение
CI/CD делится на два этапа:
1️⃣ CI — Continuous Integration
Каждый коммит запускает автоматический процесс:
- Установка зависимостей
- Линтер
- Статический анализ
- Unit-тесты
- Сборка проекта
Пример шага CI (GitHub Actions):
name: CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: composer install --no-interaction
- name: Run tests
run: php artisan test
Если тесты падают — код не проходит дальше.
2️⃣ CD — Continuous Delivery / Deployment
После успешного CI:
- Происходит деплой на сервер
- Обновляются контейнеры
- Перезапускается сервис
- Очищается кеш
Пример деплоя по SSH:
- name: Deploy
run: |
ssh user@server "cd /var/www/project && git pull && systemctl reload php8.2-fpm"
Delivery vs Deployment
- Continuous Delivery — деплой требует ручного подтверждения.
- Continuous Deployment — деплой происходит автоматически.
Типичная структура пайплайна
- Checkout
- Install dependencies
- Lint
- Test
- Build
- Deploy
- Notify
Что не является CI/CD
- Ручной git pull на сервере
- Копирование файлов через FTP
- Релизы «по пятницам руками»
Аналоги и связанные термины
- DevOps
- GitOps
- Pipeline
- Deployment
- Artifact
Пример использования
«После push в main запускается CI/CD, проект автоматически тестируется и деплоится на VPS.»
Мини-FAQ
CI/CD нужен только крупным проектам? Нет. Даже WordPress или Laravel-проект выигрывает от автодеплоя.
Можно ли использовать CI без CD? Да. Можно только тестировать код без автодеплоя.
Смотри также
- DevOps
- GitOps
- Deployment
- Docker