Настройка CI/CD для сайта через GitHub Actions
Каждый второй релиз на production срывается из-за человеческого фактора: забыли залить файл, не обновили конфиг, пропустили тесты. CI/CD исключает эти риски. Мы, в компании с 5-летним опытом, настроили более 50 пайплайнов для проектов от лендингов до высоконагруженных SaaS. GitHub Actions — наш выбор для быстрой автоматизации. Закажите настройку — получите готовый пайплайн за 1–5 дней.
Почему GitHub Actions?
В отличие от Jenkins или GitLab CI, не нужно поднимать отдельный сервер, настраивать вебхуки и плагины. Всё управляется через YAML-файлы в репозитории. Для публичных проектов — бессрочно бесплатно. Для приватных — 2000 минут в месяц на бесплатном тарифе, чего хватает на 400–1000 деплоев. При превышении лимита можно подключить self-hosted runner на своём сервере — минуты не расходуются. GitHub Actions в 2 раза быстрее настраивается, чем GitLab CI, и не требует сервера, в отличие от Jenkins.
Как ускорить сборку с помощью кеширования?
Кеширование зависимостей — главный ускоритель. actions/setup-node с параметром cache: 'npm' автоматически кеширует ~/.npm. Для PHP используйте actions/cache с ключом по composer.lock. Пример для Composer:
- uses: actions/cache@v4
with:
path: vendor
key: composer-${{ hashFiles('composer.lock') }}
После прогрева кеша время прогона падает с 3–5 минут до 60–90 секунд. Матричные сборки (несколько версий Node.js) выполняются параллельно и кешируются отдельно. Экономия времени команды — 3 часа в неделю, что при средней ставке DevOps даёт до 25 000 ₽ в месяц.
Структура воркфлоу
Минимальный воркфлоу для сайта на Node.js с деплоем на сервер по SSH:
name: Deploy
on:
push:
branches: [main]
jobs:
test:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- run: npm ci
- run: npm test
build:
needs: test
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- run: npm ci
- run: npm run build
- uses: actions/upload-artifact@v4
with:
name: dist
path: dist/
deploy:
needs: build
runs-on: ubuntu-22.04
environment: production
steps:
- uses: actions/download-artifact@v4
with:
name: dist
path: dist/
- name: Deploy via rsync
uses: burnett01/[email protected]
with:
switches: -avzr --delete
path: dist/
remote_path: /var/www/mysite
remote_host: ${{ secrets.DEPLOY_HOST }}
remote_user: deploy
remote_key: ${{ secrets.DEPLOY_KEY }}
Три джоба — тест, сборка, деплой. Если тесты падают, сборка не запускается. Используем артефакты для передачи собранных файлов.
Управление секретами
Все чувствительные данные — в Settings → Secrets and variables → Actions. Никакие ключи или пароли не попадают в код. Для разных окружений используем Environments — каждый набор секретов изолирован. Деплой в production можно защитить ручным одобрением.
- name: Configure .env
run: |
echo "DATABASE_URL=${{ secrets.DATABASE_URL }}" >> .env
echo "APP_KEY=${{ secrets.APP_KEY }}" >> .env
Docker-сборка и пуш в Registry
Если деплой идёт через контейнеры:
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ghcr.io/${{ github.repository }}:${{ github.sha }}
cache-from: type=gha
cache-to: type=gha,mode=max
GitHub Container Registry доступен бесплатно, авторизация через встроенный GITHUB_TOKEN.
Уведомления о статусе
- name: Notify Telegram on failure
if: failure()
uses: appleboy/telegram-action@master
with:
to: ${{ secrets.TELEGRAM_CHAT_ID }}
token: ${{ secrets.TELEGRAM_TOKEN }}
message: "❌ Deploy failed: ${{ github.repository }} @ ${{ github.sha }}"
if: failure() запускает только при сбое. Для уведомлений о начале и успехе — if: always().
Пошаговая инструкция настройки CI/CD
- Создайте в корне репозитория папку
.github/workflows. - Добавьте файл
deploy.ymlс конфигурацией (пример выше). - Настройте секреты в Settings → Secrets and variables → Actions.
- Запушьте изменения в ветку main — воркфлоу запустится автоматически.
- Проверьте статус во вкладке Actions репозитория.
- При успехе — деплой выполнен. При ошибке — получите уведомление.
Сравнение: GitHub Actions vs другие CI/CD
| Платформа | Простота настройки | Необходимость сервера | Бесплатный лимит | Среднее время настройки |
|---|---|---|---|---|
| GitHub Actions | Высокая | Нет | 2000 мин/мес (частные) | 1-2 дня |
| GitLab CI | Средняя | Нет (но можно self-hosted) | 400 мин/мес | 2-3 дня |
| Jenkins | Низкая | Да | Неограничен (свой сервер) | 3-7 дней |
GitHub Actions проще в настройке, чем Jenkins, и не требует выделенного сервера. Для большинства веб-проектов это оптимальный выбор.
Этапы настройки и сроки
| Этап | Длительность | Результат |
|---|---|---|
| Анализ проекта | 1-2 часа | Понимание процесса деплоя и стека |
| Создание воркфлоу | 1-2 дня | YAML-файл с тестами, сборкой, деплоем |
| Настройка секретов | 1 час | Безопасное хранение ключей |
| Оптимизация кеша | 2-3 часа | Сборка за 60-90 секунд |
| Интеграция уведомлений | 1-2 часа | Оповещения в Telegram/Slack |
| Тестирование и отладка | 1 день | Стабильная работа пайплайна |
Что входит в работу
Мы предоставляем полный цикл настройки CI/CD:
- Анализ текущего процесса деплоя и архитектуры проекта
- Создание YAML-воркфлоу с тестами, сборкой, деплоем
- Настройка секретов и окружений в репозитории
- Оптимизация скорости сборки (кеширование, матрицы)
- Интеграция уведомлений (Telegram, Slack, email)
- Документация по воркфлоу и инструкция для команды
- Обучение разработчиков работе с пайплайном
Полный пример конфига для Node.js + Docker
name: Deploy
on: [push]
jobs:
test:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- run: npm ci
- run: npm test
build:
needs: test
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- run: npm ci
- run: npm run build
- name: Build Docker image
run: docker build -t myapp .
- name: Push to registry
run: docker push ghcr.io/myorg/myapp:latest
deploy:
needs: build
runs-on: ubuntu-22.04
steps:
- name: Deploy via SSH
uses: appleboy/[email protected]
with:
host: ${{ secrets.DEPLOY_HOST }}
username: deploy
key: ${{ secrets.DEPLOY_KEY }}
script: |
docker pull ghcr.io/myorg/myapp:latest
docker-compose up -d
Наши результаты и опыт
Более 5 лет мы настраиваем CI/CD для проектов разной сложности — от лендингов до высоконагруженных SaaS. 50+ реализованных пайплайнов с гарантией стабильной работы. Каждый кейс документируем, чтобы команда заказчика могла самостоятельно поддерживать и дорабатывать пайплайн. Стоимость простоев из-за ошибок деплоя может достигать 100 000 ₽ в день — CI/CD это исключает.
Сроки и стоимость
- Базовый воркфлоу (тест + деплой по SSH) — 1–2 дня
- Полный pipeline (матрицы, Docker, уведомления, ручные одобрения) — 3–5 дней
Стоимость рассчитывается индивидуально в зависимости от сложности и стека. Свяжитесь с нами для консультации — подберем оптимальное решение для вашего проекта.







