name: PHPUnit Tests on: push permissions: contents: read jobs: phpunit: runs-on: ubuntu-latest timeout-minutes: 10 strategy: matrix: postgres_version: [ 15, 16, 17 ] services: pgsql_test: image: postgres:${{ matrix.postgres_version }} env: PGPASSWORD: 'root' POSTGRES_DB: 'laravel' POSTGRES_USER: 'root' POSTGRES_PASSWORD: 'root' ports: - 5432:5432 options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 gotenberg: image: gotenberg/gotenberg:8 ports: - 3000:3000 options: >- --health-cmd "curl --silent --fail http://localhost:3000/health" --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: '8.3' extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv coverage: pcov - name: "Run composer install" run: composer install -n --prefer-dist - uses: actions/setup-node@v4 with: node-version: '20.x' - name: "Install dependencies" run: npm ci - name: "Build Frontend" run: npm run build - name: "Prepare Laravel Application" run: | cp .env.ci .env php artisan key:generate php artisan passport:keys - name: "Run PHPUnit" run: php artisan test --stop-on-failure --coverage-text --coverage-clover=coverage.xml - name: "Upload coverage reports to Codecov" uses: codecov/codecov-action@v5.4.3 with: token: ${{ secrets.CODECOV_TOKEN }} slug: solidtime-io/solidtime