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-hosted | Self-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 днів.
