name: CI on: push: paths: - '**.php' - '.gitea/workflows/ci.yml' - 'phpunit.xml.dist' - 'phpstan.neon.dist' - 'phpstan-baseline.neon' - 'composer.json' - 'composer.lock' workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: phpstan: name: PHPStan runs-on: ubuntu-latest timeout-minutes: 5 steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.5' coverage: none - name: Install composer dependencies run: composer install --prefer-dist --no-interaction --no-progress - name: Run PHPStan run: vendor/bin/phpstan --error-format=github pest: name: Pest (PHP ${{ matrix.php }}, Laravel ${{ matrix.laravel }}, ${{ matrix.stability }}) needs: phpstan runs-on: ubuntu-latest timeout-minutes: 5 strategy: fail-fast: true matrix: php: ['8.3', '8.4', '8.5'] laravel: ['12.*', '13.*'] stability: [prefer-lowest, prefer-stable] include: - laravel: '12.*' testbench: '10.*' - laravel: '13.*' testbench: '11.*' steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick, fileinfo coverage: none - name: Setup problem matchers run: | echo "::add-matcher::${{ runner.tool_cache }}/php.json" echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" - name: Install dependencies run: | composer require \ "laravel/framework:${{ matrix.laravel }}" \ "orchestra/testbench:${{ matrix.testbench }}" \ "nesbot/carbon:^3.8.4" \ --dev --no-interaction --no-update composer update --${{ matrix.stability }} --prefer-dist --no-interaction - name: List installed dependencies run: composer show -D - name: Execute tests run: vendor/bin/pest --ci