name: PHP Code Quality on: pull_request: paths: - '**.php' - 'phpstan.neon' - 'phpunit.xml' # Allow manual triggering workflow_dispatch: # Allow other workflows (e.g. Publish) to invoke this one. workflow_call: env: fail-fast: true permissions: contents: read jobs: phpstan: name: PHPStan runs-on: ubuntu-latest steps: - name: Check out code uses: actions/checkout@v5 - name: Set up PHP uses: shivammathur/setup-php@v2 with: php-version: '8.4' coverage: none # PHPUnit is installed to support PHPStan checking tests/ tools: phpstan/phpstan:^2.1, phpunit/phpunit:^12.4 # https://phpstan.org/user-guide/result-cache - name: Restore result cache uses: actions/cache/restore@v4 with: path: .phpstan-tmp key: phpstan-result-cache-${{ github.run_id }} restore-keys: | phpstan-result-cache- - name: Run PHPStan run: phpstan analyze --no-progress # https://phpstan.org/user-guide/result-cache - name: Save result cache uses: actions/cache/save@v4 if: ${{ !cancelled() }} with: # same as in phpstan.neon path: .phpstan-tmp key: phpstan-result-cache-${{ github.run_id }} phpunit: name: PHPUnit runs-on: ubuntu-latest continue-on-error: ${{ matrix.experimental }} strategy: fail-fast: false matrix: php: ['8.3', '8.4'] experimental: [false] include: - php: '8.5' experimental: true steps: - name: Check out code uses: actions/checkout@v5 - name: Set up PHP ${{ matrix.php }} uses: shivammathur/setup-php@v2 with: # Check https://phpunit.de/supported-versions.html for PHP version compatibility php-version: ${{ matrix.php }} coverage: none tools: phpunit/phpunit:^12.4 - name: Run PHPUnit run: phpunit --exclude-group integration --coverage-filter classes --coverage-filter include