GitHub Actions - вбудований у GitHub CI/CD. Робочі процеси (workflows) описуються в YAML у .github/workflows/ і запускаються на події: push, pull request, розклад, ручний запуск.
Основні поняття:
- workflow - файл з описом процесу;
- event (
on) - що запускає процес; - job - набір кроків, що виконується на окремій віртуальній машині (runner); jobs ідуть паралельно, якщо не вказано залежність
needs; - step - команда (
run) чи готова дія (uses) з Marketplace.
Мінімальний workflow для Laravel:
# .github/workflows/tests.yml
name: tests
on:
pull_request:
push:
branches: [main]
jobs:
tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: shivammathur/setup-php@v2
with:
php-version: '8.5'
coverage: none
- run: composer install --no-interaction --prefer-dist
- run: cp .env.example .env && php artisan key:generate
- run: vendor/bin/pint --test
- run: php artisan test --compact
Що відбувається: на кожен PR і push у main GitHub піднімає чисту машину з Ubuntu, завантажує код, встановлює PHP і залежності, перевіряє стиль і запускає тести. Результат видно в PR як перевірку - зелену чи червону.
Чому це важливо:
- те, що «працює в мене», перевіряється в чистому середовищі;
- хуки можна пропустити, а CI - ні, особливо з обов'язковими перевірками в захисті гілки;
- рецензент не витрачає час на код, який не проходить тести.
Корисно знати:
- для публічних репозиторіїв стандартні runner-и безкоштовні, для приватних є місячна квота хвилин;
- секрети (ключі API) - у Settings → Secrets і доступні як
${{ secrets.NAME }}; у PR з форків секрети за замовчуванням не передаються; shivammathur/setup-php- де-факто стандарт для PHP: версії, розширення, інструменти.