name: run-tests on: push: paths: - '**.php' - '.github/workflows/run-tests.yml' - 'phpunit.xml.dist' - 'composer.json' - 'composer.lock' jobs: test: runs-on: ${{ matrix.os }} timeout-minutes: 5 strategy: fail-fast: true matrix: os: [ubuntu-latest] php: [8.3, 8.2] laravel: [10.*, 11.*] stability: [prefer-stable] include: - laravel: 11.* testbench: 9.* carbon: ^2.63 - laravel: 10.* testbench: 8.* name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.stability }} - ${{ matrix.os }} services: mysql: image: mysql:8.0 env: MYSQL_USER: user MYSQL_PASSWORD: secret MYSQL_DATABASE: laravel_query_builder MYSQL_ROOT_PASSWORD: secretroot ports: - 3306 options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 redis: image: redis ports: - 6379:6379 options: >- --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5 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 }}" --no-interaction --no-update composer update --${{ matrix.stability }} --prefer-dist --no-interaction - name: Execute tests run: vendor/bin/pest env: DB_USERNAME: user DB_PASSWORD: secret DB_PORT: ${{ job.services.mysql.ports[3306] }} REDIS_PORT: 6379