GitHub Actions — CI/CD платформа, интегрированная в GitHub. Позволяет автоматизировать любые рабочие процессы: тестирование кода при каждом push, сборку Docker-образов, деплой на сервер, публикацию npm-пакетов, отправку уведомлений.
Структура workflow
# .github/workflows/deploy.yml
name: Deploy to Production
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install and build
run: |
npm ci
npm run build
- name: Deploy via SSH
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SERVER_HOST }}
username: deploy
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /var/www/myapp
git pull
npm ci --production
pm2 restart myapp
Ключевые концепции
- Workflow — YAML-файл, описывающий автоматизацию.
- Job — набор шагов, выполняемых на одном runner.
- Step — отдельная команда или Action.
- Action — переиспользуемый блок (из GitHub Marketplace).
- Secrets — зашифрованные переменные окружения.
- Runner — виртуальная машина для выполнения jobs.
Marketplace
GitHub Marketplace содержит тысячи готовых Actions: docker/build-push-action, aws-actions/configure-aws-credentials, azure/webapps-deploy, appleboy/ssh-action. Повторяемость: checkout, build, test, deploy — стандартный пайплайн за 30 строк YAML.
История
GitHub Actions анонсирован на GitHub Universe в октябре 2018 года. Публичный релиз с YAML-синтаксисом — ноябрь 2019. Microsoft купила GitHub за $7.5 млрд в 2018 году. В 2024 году GitHub Actions — один из самых популярных CI/CD инструментов.
Связь с хостингом
GitHub Actions — стандартный инструмент деплоя на VDS: при push в main автоматически выполняется SSH-деплой, перезапуск сервисов, очистка кэша CDN. Secrets хранят SSH-ключи и токены безопасно. Бесплатный лимит (2000 мин/мес) покрывает большинство небольших проектов.
История GitHub Actions
GitHub Actions анонсированы в октябре 2018 года, публичный доступ — ноябрь 2019 года. В первые 24 часа создано более 1 миллиона workflows. Конкурирует с GitLab CI/CD, Bitbucket Pipelines, CircleCI, Jenkins. GitHub Actions Marketplace к 2023 году содержит более 15 000 action-пакетов. Бесплатный план: 2 000 минут/месяц для публичных репозиториев, бесплатно без ограничений. Поддерживает self-hosted runners на VPS.
GitHub Actions vs GitLab CI vs Jenkins
| Параметр | GitHub Actions | GitLab CI | Jenkins |
|---|---|---|---|
| Хостинг | SaaS | SaaS/Self | Self-hosted |
| YAML конфигурация | да | да | Groovy/Declarative |
| Бесплатные минуты | 2 000/мес | 400/мес | нет (self-hosted) |
| Экосистема | 15 000+ actions | встроенные templates | 1 800+ плагинов |
Типичные ошибки
- Хранение secrets в коде вместо GitHub Secrets — утечка при открытии репозитория.
- Запуск на
pushбез фильтрации веток — CI запускается на каждый коммит во всех ветках. - Кеширование зависимостей без привязки к lock-файлу — устаревший кеш скрывает проблемы сборки.
GitHub Actions поддерживает self-hosted runners — запуск workflow на собственном VPS вместо GitHub-инфраструктуры. Это важно для деплоя в закрытые сети или для экономии минут. Runner устанавливается командами из документации GitHub, подключается к репозиторию через токен. Кеш зависимостей (composer, npm) сохраняется через action actions/cache.
GitHub Actions поддерживает деплой на shared hosting через FTP-action и на Kubernetes-кластеры через kubectl action. Каждый workflow файл хранится в .github/workflows/.