Skip to content

refactor: one namespace derivation from the URL path shared by the ge… #32

refactor: one namespace derivation from the URL path shared by the ge…

refactor: one namespace derivation from the URL path shared by the ge… #32

Workflow file for this run

name: CI
on:
pull_request:
push:
branches: [main]
workflow_dispatch:
permissions:
contents: read
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
php: ['8.2', '8.3', '8.4']
steps:
- uses: actions/checkout@v7
- uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
coverage: none
- uses: actions/setup-node@v6
with:
node-version: '24'
- run: composer install --prefer-dist --no-interaction
# Hermetic: regenerates from the committed spec, so this verifies that the committed
# generated code still reproduces from it, with no network dependency. Refreshing the
# spec itself is the job of the release workflow. generate.mjs also runs sync-docs.mjs,
# so README.md and AGENTS.md are asserted in the same diff rather than by a second run.
- name: Codegen drift check
if: matrix.php == '8.2'
env:
ROXYAPI_SPEC_FILE: specs/openapi.json
run: |
node scripts/generate.mjs
git diff --exit-code -- specs/openapi.json src/Generated src/Roxy.php src/Version.php README.md AGENTS.md \
|| { echo 'codegen drift: commit the regenerated files'; exit 1; }
- name: Lint
if: matrix.php == '8.2'
run: vendor/bin/pint --test
- name: Static analysis
if: matrix.php == '8.2'
run: vendor/bin/phpstan analyse --no-progress --memory-limit=512M
- name: Test
run: vendor/bin/pest --no-coverage