hostprofi.ru
Подобрать хостинг
Термин·буква C

CI/CD

краткое определение

Практика автоматизации сборки, тестирования и деплоя приложений при каждом коммите в репозиторий.

CI/CD (Continuous Integration / Continuous Delivery или Deployment) — практика автоматизации сборки, тестирования и доставки программного обеспечения. Позволяет командам выпускать изменения быстро, безопасно и предсказуемо, убирая ручные операции из процесса деплоя.

Как работает

При коммите в Git автоматически запускается пайплайн:

  1. CI (Continuous Integration) — сборка кода, запуск тестов, проверка линтером, сканирование уязвимостей. Если что-то сломалось — разработчик получает уведомление немедленно, не через неделю на Code Review.
  2. CD (Continuous Delivery) — артефакт (Docker-образ, архив) готов к деплою. Деплой на staging выполняется автоматически, на production — вручную или автоматически.
  3. Continuous Deployment — максимальная автоматизация: каждый прошедший тесты коммит автоматически деплоится в production.

История

Практику CI описал Кент Бек в книге «Extreme Programming Explained» (1999). Первым CI-сервером стал CruiseControl (2001). Jenkins (2011, форк Hudson) стал стандартом на годы. GitLab CI (2012) и GitHub Actions (2018) интегрировали CI/CD прямо в хостинг репозиториев. Сегодня каждый крупный GitHub/GitLab репозиторий имеет CI/CD пайплайн.

Инструменты CI/CD

  • GitHub Actions — встроен в GitHub, YAML-workflow, marketplace action-ов, бесплатные минуты для публичных репо.
  • GitLab CI/CD — мощный встроенный CI, runner-архитектура, Registry, Pages.
  • Jenkins — самодостаточный сервер, 1800+ плагинов, Jenkinsfile-пайплайны. Сложнее в настройке, но гибче.
  • Woodpecker CI — лёгкий self-hosted CI, совместим с Gitea/Forgejo.
  • Coolify — self-hosted PaaS с встроенным CD через Git webhook.

Пример GitHub Actions workflow

# .github/workflows/deploy.yml
name: Deploy to VPS
on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build Docker image
        run: docker build -t myapp:${{ github.sha }} .
      - name: Deploy via SSH
        uses: appleboy/ssh-action@v1
        with:
          host: ${{ secrets.VPS_HOST }}
          username: deploy
          key: ${{ secrets.SSH_KEY }}
          script: |
            docker pull myapp:${{ github.sha }}
            docker compose up -d

Деплой через webhook

Для простых проектов на VPS CI/CD через webhook: GitHub/GitLab отправляет HTTP-запрос на endpoint сервера при пуше в ветку. Сервер выполняет git pull && npm run build && pm2 restart app. Легковеснее полного CI-сервера, подходит для небольших проектов.

На что обращать внимание

CI/CD без rollback — неполный CI/CD. Каждый деплой должен иметь механизм отката: предыдущий Docker-образ, git revert, blue-green deployment. Секреты (API ключи, SSH-ключи) храните в CI/CD Secrets, никогда не в коде репозитория. Мониторинг после деплоя: Grafana с аннотацией деплоя позволяет коррелировать деплой с ростом ошибок или деградацией метрик.

Метрики CI/CD пайплайна в Grafana: Deployment Frequency (как часто деплоится), Lead Time for Changes (время от коммита до production), Change Failure Rate (доля деплоев, вызвавших инциденты), MTTR (среднее время восстановления). Это четыре метрики DORA — стандарт оценки DevOps-зрелости команды.

Другие термины