Налаштування CI/CD для сайту через GitHub Actions

Релізи на production часто зриваються через людський фактор: забуті файли, неоновлені конфіги, пропущені тести. Ми налаштовуємо CI/CD через GitHub Actions, щоб автоматизувати збірку, тестування та деплой вашого сайту. Наша команда реалізує проєкт під ключ — від створення пайплайну до підтримки, забезпечуючи стабільні та передбачувані релізи.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Налаштування CI/CD для сайту через GitHub Actions
Середній
від 1 дня до 3 днів
Часті запитання

Налаштування 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.

Пришвидшення збірки кешуванням

Документація GitHub рекомендує кешувати залежності для прискорення workflow. Кешування залежностей — головний прискорювач. actions/setup-node з параметром cache: 'npm' автоматично кешує ~/.npm. Для PHP використовуйте actions/cache з ключем по composer.lock.

- uses: actions/cache@v4 with: path: vendor key: composer-${{ hashFiles('composer.lock') }} 

Після прогріву кешу час прогону падає з 3–5 хвилин до 60–90 секунд — це в 4 рази швидше. Матричні збірки (кілька версій Node.js) виконуються паралельно і кешуються окремо. Економія часу команди — 3 години на тиждень, що при середній ставці DevOps $50/год дає до $600 на місяць (близько 22 000 грн).

Структура воркфлоу (мінімальний приклад)

Мінімальний воркфлоу для сайту на Node.js з деплоєм на сервер по SSH. Цей приклад базується на офіційній документації GitHub Actions:

---
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

  1. Створіть в корені репозиторію папку .github/workflows.
  2. Додайте файл deploy.yml з конфігурацією (приклад вище).
  3. Налаштуйте секрети в Settings → Secrets and variables → Actions.
  4. Запуште зміни в гілку main — воркфлоу запуститься автоматично.
  5. Перевірте статус у вкладці Actions репозиторію.
  6. При успіху — деплой виконано. При помилці — отримаєте сповіщення.

Порівняння: 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 дні, від 3000 грн під ключ.
  • Повний pipeline (матриці, Docker, сповіщення, ручні схвалення) — 3–5 днів, від 8000 грн під ключ.

Вартість розраховується індивідуально. Напишіть нам для консультації — оцінимо проект.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1393
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060