name: "Continuous Integration" on: pull_request: branches: - "*.x" - "master" push: branches: - "*.x" - "master" env: fail-fast: true SYMFONY_DEPRECATIONS_HELPER: "max[self]=0&max[direct]=0" jobs: phpunit: name: "PHPUnit" runs-on: "ubuntu-20.04" strategy: matrix: php-version: - "7.1" - "7.2" - "7.3" - "7.4" - "8.0" deps: - "normal" include: - deps: "low" php-version: "7.1" - deps: "symfony/lts:v3" php-version: "7.3" - deps: "dev" php-version: "7.3" steps: - name: "Checkout" uses: "actions/checkout@v2" with: fetch-depth: 2 - name: "Install PHP with PCOV" uses: "shivammathur/setup-php@v2" if: "${{ matrix.php-version != '7.1' }}" with: php-version: "${{ matrix.php-version }}" coverage: "pcov" ini-values: "zend.assertions=1" - name: "Install PHP with XDebug" uses: "shivammathur/setup-php@v2" if: "${{ matrix.php-version == '7.1' }}" with: php-version: "${{ matrix.php-version }}" coverage: "xdebug" ini-values: "zend.assertions=1" - name: "Cache dependencies installed with composer" uses: "actions/cache@v2" with: path: "~/.composer/cache" key: "php-${{ matrix.php-version }}-composer-locked-${{ hashFiles('composer.lock') }}" restore-keys: "php-${{ matrix.php-version }}-composer-locked-" # to be removed when doctrine/orm adds support for PHP 8 - name: "Pretend this is PHP 7.4" run: "composer config platform.php 7.4.99" if: "${{ matrix.php-version == '8.0' }}" - name: "Install dependencies with composer" run: "composer update --no-interaction --prefer-dist" if: "${{ matrix.deps == 'normal' }}" - name: "Install lowest possible dependencies with composer" run: "composer update --no-interaction --prefer-dist --prefer-lowest" if: "${{ matrix.deps == 'low' }}" - name: "Install dependencies at dev stability with composer" run: "composer config minimum-stability dev; composer update --no-interaction --prefer-dist --prefer-lowest" if: "${{ matrix.deps == 'dev' }}" - name: "Install dependencies with composer with extra constraint" run: "composer require --no-update ${{matrix.deps}};composer update --no-interaction --prefer-dist" if: "${{ contains(matrix.deps, '/') }}" - name: "Run PHPUnit" run: "vendor/bin/phpunit --coverage-clover=coverage.xml" - name: "Upload coverage file" uses: "actions/upload-artifact@v2" if: "${{ ! contains(matrix.deps, '/') }}" with: name: "phpunit-${{ matrix.deps }}-${{ matrix.php-version }}.coverage" path: "coverage.xml" - name: "Upload coverage file, sanitize the name" uses: "actions/upload-artifact@v2" if: "${{ contains(matrix.deps, '/') }}" with: name: "phpunit-symfony-lts-${{ matrix.php-version }}.coverage" path: "coverage.xml" upload_coverage: name: "Upload coverage to Codecov" runs-on: "ubuntu-20.04" needs: - "phpunit" steps: - name: "Checkout" uses: "actions/checkout@v2" with: fetch-depth: 2 - name: "Download coverage files" uses: "actions/download-artifact@v2" with: path: "reports" - name: "Upload to Codecov" uses: "codecov/codecov-action@v1" with: directory: reports