on: push: branches: - master pull_request: # Allow manually triggering the workflow. workflow_dispatch: name: Qa workflow env: phiveGPGKeys: 4AA394086372C20A,D2CCAC42F6295E7D,E82B2FB314E9906E,8A03EA3B385DBAA1 jobs: setup: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: composer uses: docker://composer env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: args: install --no-interaction --prefer-dist --optimize-autoloader - name: composer-require-checker uses: docker://phpga/composer-require-checker-ga env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: args: check --config-file ./composer-require-config.json composer.json phpunit-with-coverage: runs-on: ubuntu-latest name: Unit tests needs: setup steps: - uses: actions/checkout@v2 - name: composer uses: docker://composer env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: args: install --no-interaction --prefer-dist --optimize-autoloader - name: PHPUnit uses: docker://phpdoc/phpunit-ga:latest env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Quick check code coverage level run: php tests/coverage-checker.php 91 phpunit: name: Unit tests for PHP version ${{ matrix.php-versions }} on ${{ matrix.operating-system }} runs-on: ${{ matrix.operating-system }} strategy: fail-fast: false matrix: dependencies: - highest - locked - lowest operating-system: - ubuntu-latest - windows-latest - macOS-latest php-versions: ['7.2', '7.3', '7.4', '8.0', '8.1'] env: extensions: mbstring key: cache-v1 # can be any string, change to clear the extension cache. needs: - setup - phpunit-with-coverage steps: - uses: actions/checkout@v2 - name: Setup cache environment id: cache-env uses: shivammathur/cache-extensions@v1 with: php-version: ${{ matrix.php-versions }} extensions: ${{ env.extensions }} key: ${{ env.key }} - name: Cache extensions uses: actions/cache@v2.1.6 with: path: ${{ steps.cache-env.outputs.dir }} key: ${{ steps.cache-env.outputs.key }} - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-versions }} extensions: ${{ env.extensions }} ini-values: memory_limit=2G, display_errors=On, error_reporting=-1 tools: phive - name: Install PHAR dependencies env: GITHUB_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: phive --no-progress install --copy --trust-gpg-keys ${{ env.phiveGPGKeys }} --force-accept-unsigned - name: Install phpunit 8 for php 7.2 if: matrix.php-versions == '7.2' env: GITHUB_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: phive --no-progress install --copy --trust-gpg-keys ${{ env.phiveGPGKeys }} phpunit:^8.5 - name: Install Composer ${{ matrix.dependencies }} dependencies & cache dependencies uses: "ramsey/composer-install@v1" with: composer-options: --optimize-autoloader dependency-versions: ${{ matrix.dependencies }} - name: Run PHPUnit run: php tools/phpunit codestyle: runs-on: ubuntu-latest needs: [setup, phpunit] steps: - uses: actions/checkout@v2 - name: Restore/cache vendor folder uses: actions/cache@v2.1.6 with: path: vendor key: all-build-${{ hashFiles('**/composer.lock') }} restore-keys: | all-build-${{ hashFiles('**/composer.lock') }} all-build- - name: Code style check uses: phpDocumentor/coding-standard@latest with: args: -s phpstan: runs-on: ubuntu-latest needs: [setup, phpunit] steps: - uses: actions/checkout@v2 - name: composer uses: docker://composer env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: args: install --no-interaction --prefer-dist --optimize-autoloader - name: PHPStan uses: phpDocumentor/phpstan-ga@0.12.9 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: args: analyse src --configuration phpstan.neon psalm: name: Psalm runs-on: ${{ matrix.operating-system }} strategy: matrix: operating-system: - ubuntu-latest php-versions: ['7.2'] env: extensions: mbstring key: cache-v1 # can be any string, change to clear the extension cache. needs: - setup - phpunit steps: - uses: actions/checkout@v2 - name: Setup cache environment id: cache-env uses: shivammathur/cache-extensions@v1 with: php-version: ${{ matrix.php-versions }} extensions: ${{ env.extensions }} key: ${{ env.key }} - name: Cache extensions uses: actions/cache@v2.1.6 with: path: ${{ steps.cache-env.outputs.dir }} key: ${{ steps.cache-env.outputs.key }} - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-versions }} extensions: ${{ env.extensions }} ini-values: memory_limit=2G, display_errors=On, error_reporting=-1 - name: Install Composer dependencies & cache dependencies uses: "ramsey/composer-install@v1" with: composer-options: --optimize-autoloader - name: Run psalm run: vendor/bin/psalm.phar --output-format=github bc_check: name: BC Check runs-on: ubuntu-latest needs: [setup, phpunit] steps: - uses: actions/checkout@v2 - name: fetch tags run: git fetch --depth=1 origin +refs/tags/*:refs/tags/* - name: BC Check uses: docker://nyholm/roave-bc-check-ga