Что такое CI/CD и как задеплоить проект с помощью GitHub Actions

7 минут чтения
Средний рейтинг статьи — 4.9

Автоматизация сборки и доставки кода — ключевой элемент современной разработки. Здесь на помощь приходит подход CI/CD (Continuous Integration / Continuous Delivery, непрерывная интеграция и доставка). А для его реализации удобно использовать такие инструменты, как GitHub Actions.

В этой статье разберём, что такое CI/CD, зачем он нужен, и на конкретном примере покажем, как настроить деплой проекта через GitHub Actions.

Что такое CI/CD

CI (Continuous Integration, непрерывная интеграция)
Каждый разработчик регулярно сливает изменения в общий репозиторий. При этом автоматически запускаются проверки: тесты, линтеры, сборка. Это помогает выявлять ошибки на ранних этапах.

CD (Continuous Delivery / Deployment, непрерывная доставка/развёртывание)
После успешной интеграции изменения автоматически доставляются на staging или production-сервер. Это избавляет от ручных шагов при релизе и снижает риск ошибок.

CI/CD даёт бизнесу более быстрый релиз фич и гарантирует стабильность кода.

Зачем использовать GitHub Actions

GitHub Actions — это встроенный в GitHub сервис CI/CD. Его преимущества:

  • Не нужно отдельного сервера для CI, всё работает в облаке GitHub.
  • Простая интеграция с pull request’ами, issues и релизами.
  • Поддержка готовых экшенов из Marketplace.
  • Возможность писать собственные шаги на Bash, Node.js или Docker.

Пример: Автодеплой Node.js-приложения

1. Создаём workflow-файл

В корне репозитория создайте папку .github/workflows/ и файл deploy.yml:

name: Deploy Project
 
on:
  push:
    branches:
      - main   # запускать при пуше в main
 
jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
 
    steps:
      - name: Checkout code
        uses: actions/checkout@v3
 
      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 18
 
      - name: Install dependencies
        run: npm install
 
      - name: Run tests
        run: npm test
 
      - name: Build project
        run: npm run build
 
      - name: Deploy to server
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USER }}
          key: ${{ secrets.SERVER_SSH_KEY }}
          script: |
            cd /var/www/project
            git pull origin main
            npm install --production
            pm2 restart app
 

2. Настройка секретов

В GitHub откройте Settings → Secrets and variables → Actions и добавьте:

  • SERVER_HOST — IP или домен сервера.
  • SERVER_USER — имя пользователя для подключения.
  • SERVER_SSH_KEY — приватный SSH-ключ (без пароля).

3. Как это работает

  1. При пуше в main GitHub запускает workflow.
  2. Проект собирается и тестируется.
  3. Подключение по SSH к серверу и обновление кода.
  4. Перезапуск приложения через PM2 (или любой другой процесс-менеджер).

Просмотр результатов Workflow

Чтобы увидеть результаты выполнения GitHub Actions workflow:

  1. Перейдите на главную страницу репозитория и нажмите Actions в панели под названием репозитория.
  2. В левой боковой панели отобразятся все workflows. Нажмите на тот, который соответствует вашему файлу — например, Deploy Project, как мы назвали его в примере ранее.
  3. В центральной части появится список всех запусков. Выберите тот, который ссылается на файл deploy.yml, чтобы посмотреть результаты именно этого workflow.
  4. В левой части под заголовком Jobs выберите задание (например, build-and-deploy).
  5. Откроется лог, показывающий выполнение каждого шага и соответствующий вывод.
    • Для шагов npm install и npm test можно увидеть весь вывод команд.
    • Если кликнуть на шаг Deploy to server, отобразится лог подключения по SSH и результат деплоя.

GitHub также предоставляет готовые workflows, которые можно использовать как шаблоны и адаптировать под свой проект. Более того, он сам подскажет подходящий стартовый workflow в зависимости от используемых языков и фреймворков в репозитории.

Пример лога:

build-and-deploy
 Set up job
 Checkout repository
 Install dependencies
   > npm install
   added 152 packages in 4s
 Run tests
   > npm test
   PASS tests/app.test.js
   Test Suites: 1 passed, 1 total
   Tests:       3 passed, 3 total
 Build project
   > npm run build
   Creating an optimized production build...
   Compiled successfully in 8s
 Deploy to server
   > ssh user@yourserver.com "cd /var/www/project && git pull && pm2 restart app"
   Already up to date.
   [PM2] Restarted app (id:0)
 Job complete

В интерфейсе GitHub Actions это выглядит как список шагов с зелёными галочками ✅ (или красным крестиком ❌, если что-то пошло не так).
Если кликнуть на любой шаг, раскроется его консольный вывод, как в примере выше.

Расширение пайплайна

С GitHub Actions можно добавлять:

  • уведомления в Slack или Telegram;
  • деплой в Docker или Kubernetes;
  • публикацию образов в Docker Hub или GitHub Container Registry;
  • выкладку статики в AWS S3, Google Cloud Storage или Cloudflare Pages.

Заключение

CI/CD — это стандарт современной разработки, который позволяет быстрее и безопаснее доставлять код пользователям.
GitHub Actions упрощает настройку пайплайна прямо из репозитория без лишней инфраструктуры.

7 минут чтения
Средний рейтинг статьи — 4.9

Настроить мониторинг за 30 секунд

Надежные оповещения о даунтаймах. Без ложных срабатываний