--- # yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json name: PHPUnit on: push: branches: [master, main] pull_request: branches: [master, main] jobs: build-test: runs-on: ubuntu-latest permissions: contents: write statuses: write strategy: fail-fast: true matrix: php: [ '8.0', '8.1', '8.2', '8.3', '8.4' ] steps: - uses: actions/checkout@v4 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} tools: composer extensions: json, dom, curl, libxml, mbstring coverage: xdebug env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Get composer cache directory id: composer-cache-dir run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - name: Get composer.lock or composer.json hash for caching id: hash shell: bash run: | if [ -f composer.lock ]; then echo "lock=${{ hashFiles('**/composer.lock') }}" >> $GITHUB_OUTPUT else echo "lock=${{ hashFiles('**/composer.json') }}" >> $GITHUB_OUTPUT fi - name: Cache Composer packages id: composer-cache uses: actions/cache@v4 with: path: ${{ steps.composer-cache-dir.outputs.dir }} key: ${{ runner.os }}-php-${{ matrix.php }}-${{ steps.hash.outputs.lock }} restore-keys: | ${{ runner.os }}-php-${{ matrix.php }}-${{ steps.hash.outputs.lock }} ${{ runner.os }}-php-${{ matrix.php }}- ${{ runner.os }}-php- - name: Install Dependencies (prefer-${{ matrix.stability }}) run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress - name: Configure matchers uses: mheap/phpunit-matcher-action@v1 - name: Execute composer test (Unit and Feature tests) run: composer test:ci