CI/CD
The repository uses GitHub Actions (.github/workflows/ci.yml) for CI.
Triggers
- Push and pull requests to
mainormaster.
Jobs
lint
- Setup PHP 8.5 and Node 24.
- Install Composer and npm dependencies.
- Run Pint (
vendor/bin/pint --test --format agent). - Run PHPStan (
vendor/bin/phpstan analyse --no-progress). - Run frontend format check (
npm run format:check). - Run frontend lint (
npm run lint). - Generate Wayfinder routes (copy
.env.example, key:generate, wayfinder:generate). - Run type check (
npm run types).
test
- Uses SQLite in-memory (
DB_CONNECTION: sqlite,DB_DATABASE: ":memory:"). - Install dependencies, copy
.env, key:generate,npm run build,php artisan test --compact.
release (optional)
- Runs on push to
main/masterwhen lint and test pass, unless the commit message containsskip release. - Runs semantic-release (version bump, changelog, Git tag, GitHub release) using
GITHUB_TOKEN. Requires Conventional Commits.
Boot without database
The lint job runs Pint, PHPStan, and frontend checks without a database. The test job uses SQLite in-memory and runs migrations as part of the test run. The application boots successfully in both cases: AppServiceProvider::injectSupportedLocalesFromDb() catches exceptions when the DB or cache is unavailable and skips locale injection, leaving config file defaults in place.
Environment
PHP_VERSION: 8.5NODE_VERSION: 24