name: "Continuous Integration" on: - push - pull_request env: COMPOSER_FLAGS: "--ansi --no-interaction --no-progress --prefer-dist" jobs: tests: name: "CI" runs-on: ubuntu-latest strategy: matrix: php-version: - "7.2" - "7.3" - "7.4" - "8.0" # disabled for now as phpspec/prophecy does not allow 8.1 # - "8.1" dependencies: [highest] include: - php-version: "7.2" dependencies: lowest - php-version: "8.0" dependencies: lowest steps: - name: "Checkout" uses: "actions/checkout@v2" - name: "Install PHP" uses: "shivammathur/setup-php@v2" with: coverage: "none" php-version: "${{ matrix.php-version }}" extensions: mongodb, redis, amqp - name: Get composer cache directory id: composercache run: echo "::set-output name=dir::$(composer config cache-files-dir)" - name: Cache dependencies uses: actions/cache@v2 with: path: ${{ steps.composercache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }} restore-keys: ${{ runner.os }}-composer- - name: Remove elasticsearch/elasticsearch on PHP 8 if: "startsWith(matrix.php-version, '8.')" run: 'composer remove elasticsearch/elasticsearch --dev --no-update' - name: Add require for mongodb/mongodb to make tests runnable run: 'composer require ${{ env.COMPOSER_FLAGS }} mongodb/mongodb --dev --no-update' # This does not affect runtime, only tests were fixed in psr/log 1.1.2 so it's # ok to require this only when running tests - name: Bump required version of psr/log for tests purposes to fix the --prefer-lowest builds run: 'composer require ${{ env.COMPOSER_FLAGS }} psr/log:^1.1.2 --no-update' - name: "Handle lowest dependencies update" if: "contains(matrix.dependencies, 'lowest')" run: "echo \"COMPOSER_FLAGS=$COMPOSER_FLAGS --prefer-lowest\" >> $GITHUB_ENV" - name: "Install latest dependencies" run: | composer update ${{ env.COMPOSER_FLAGS }} - name: "Run tests" run: "composer exec phpunit -- --verbose"