GitHub Actions у 2026 році: туторіал по CI/CD для реальних проєктів

TL;DR

  • GitHub Actions — YAML-based CI/CD у .github/workflows/ без окремої платформи.
  • Визначте тригери (push, pull_request, schedule, workflow_dispatch), джоби (паралельні) та кроки (послідовні).
  • GitHub-hosted ранери безкоштовні для публічних репо; self-hosted — для GPU та приватних мереж.
  • Секрети мають скоупи (репо, середовище, організація); маркетплейс — 20,000+ готових actions.
  • Агресивне кешування, matrix builds, environments з рецензентами та fail-fast при лінтингу — основа ефективного CI у 2026.

Ментальна модель: воркфлоу, джоби, кроки

Воркфлоу — єдиний YAML-файл у .github/workflows/. Джоби запускаються паралельно на окремих VM. Кроки виконуються послідовно всередині джобу. Використовуйте needs: для залежностей між джобами.

Мінімальний воркфлоу

name: CI
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npm ci
      - run: npm test

Тригери

Push з фільтрами по гілках та шляхах, schedule (cron у UTC), workflow_dispatch для ручного запуску з typed inputs, pull_request для перевірок PR. Інші: release, issues, repository_dispatch, workflow_call.

Matrix builds

jobs:
  test:
    needs: lint
    strategy:
      matrix:
        node: [18, 20, 22]
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node }}
      - run: npm ci && npm test

Ранери: GitHub-hosted проти self-hosted

АспектGitHub-hostedSelf-hosted
НалаштуванняНульВстановлення агента
ВартістьБезкоштовно для публічних репоБезкоштовний runtime, ваше залізо
МережаТільки публічний інтернетВнутрішні мережі, VPN
Найкраще дляБільшість CI (95%)GPU, монорепо, приватна інфра

Секрети та environments

Зберігайте у Settings репо. Посилайтесь як ${{ secrets.NAME }}. Environment production з обов'язковими рецензентами блокує деплой до схвалення. Для хмарних деплоїв надавайте перевагу OIDC над статичними ключами доступу.

Кешування та скасування конкурентності

Передайте cache: npm до setup-node — вбудоване кешування. Для Python або Docker використовуйте actions/cache@v4. Додайте concurrency: group та cancel-in-progress: true — скорочує витрату хвилин на 30-50% на активних гілках.

Популярні actions у маркетплейсі

  • actions/checkout@v4 — клонує репо (перший крок у кожному воркфлоу).
  • actions/setup-node@v4, setup-python@v5, setup-go@v5 — runtime з вбудованим кешем.
  • actions/cache@v4 — кешування залежностей та артефактів між запусками.
  • docker/build-push-action@v6 — збірка та пуш Docker-образів з кешем BuildKit.
  • aws-actions/configure-aws-credentials@v4 — OIDC-based хмарна авторизація.

Прив'язуйте сторонні actions до commit SHA, а не до тегу — теги можна перемістити на шкідливий код.

Типові помилки

  • Хардкодування секретів у YAML-файлах воркфлоу.
  • Прив'язка до @latest або плаваючих тегів від сторонніх авторів.
  • Відсутність timeout-minutes: на джобах (стандарт — 6 годин!).
  • Запуск кожного воркфлоу без фільтрів шляхів — марнування лімітних хвилин.
  • pull_request_target для форків без розуміння моделі безпеки.

Часті запитання

GitHub Actions безкоштовний?

Для публічних репо — так, необмежено. Для приватних — місячний ліміт хвилин залежно від плану, потім платите за хвилини. Linux найдешевший, macOS у 10 разів дорожчий.

Як безпечно передати секрети?

Додайте в Settings → Secrets and variables → Actions. Посилайтесь як ${{ secrets.NAME }} — інжектуються як env-змінні під час виконання, автоматично приховуються в логах.

Чому воркфлоу не запускається?

Файл не у .github/workflows/, YAML має помилку парсингу, тригер або фільтр гілок не збігається, або воркфлоу вимкнений через неактивність репо понад 60 днів.

Будуєте публічно на GitHub? Покажіть свої проєкти та релізи на єдиній link-in-bio сторінці з UniLink.