Настройка 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 дней
Стоимость рассчитывается индивидуально в зависимости от сложности и стека. Свяжитесь с нами для консультации — подберем оптимальное решение для вашего проекта.







