on: push: branches: - master pull_request: name: Qa workflow env: extensions: mbstring, intl, iconv, libxml, dom, json, simplexml, zlib, fileinfo key: cache-v1 # can be any string, change to clear the extension cache. defaultPHPVersion: '7.3' jobs: phpunit-with-coverage: runs-on: ubuntu-latest name: Unit tests steps: - uses: actions/checkout@v2 - name: Install graphviz run: sudo apt-get update && sudo apt-get install -y graphviz - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ env.defaultPHPVersion }} ini-values: memory_limit=2G, display_errors=On, error_reporting=-1 tools: phive - name: Get composer cache directory id: composer-cache run: echo "::set-output name=dir::$(composer config cache-files-dir)" - name: Cache composer dependencies uses: actions/cache@v2 with: path: ${{ steps.composer-cache.outputs.dir }} key: composer-${{ hashFiles('**/composer.lock') }} restore-keys: composer- - name: Install Composer dependencies run: | composer install --no-progress --prefer-dist --optimize-autoloader - name: Run PHPUnit run: php vendor/bin/phpunit phpunit: runs-on: ${{ matrix.operating-system }} strategy: matrix: operating-system: - ubuntu-latest php-versions: ['7.2', '7.3', '7.4', '8.0', '8.1'] name: Unit tests for PHP version ${{ matrix.php-versions }} on ${{ matrix.operating-system }} needs: - phpunit-with-coverage steps: - uses: actions/checkout@v2 - name: Install graphviz run: sudo apt-get update && sudo apt-get install -y graphviz - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-versions }} extension-csv: mbstring, simplexml ini-values: memory_limit=2G, display_errors=On, error_reporting=-1 - name: Get composer cache directory id: composer-cache run: echo "::set-output name=dir::$(composer config cache-files-dir)" - name: Cache composer dependencies uses: actions/cache@v2 with: path: ${{ steps.composer-cache.outputs.dir }} key: composer-${{ hashFiles('**/composer.lock') }} restore-keys: composer- - name: Install Composer dependencies run: | composer install --no-progress --prefer-dist --optimize-autoloader - name: Run PHPUnit run: php vendor/bin/phpunit codestyle: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Restore/cache vendor folder uses: actions/cache@v1 with: path: vendor key: all-build-${{ hashFiles('**/composer.lock') }} restore-keys: | all-build-${{ hashFiles('**/composer.lock') }} all-build- - name: Restore/cache tools folder uses: actions/cache@v1 with: path: tools key: all-tools-${{ github.sha }} restore-keys: | all-tools-${{ github.sha }}- all-tools- - name: Code style check uses: docker://phpdoc/phpcs-ga:latest env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: args: -d memory_limit=1024M phpstan: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ env.defaultPHPVersion }} ini-values: memory_limit=2G, display_errors=On, error_reporting=-1 tools: pecl - name: Get composer cache directory id: composer-cache run: echo "::set-output name=dir::$(composer config cache-files-dir)" - name: Cache composer dependencies uses: actions/cache@v2 with: path: ${{ steps.composer-cache.outputs.dir }} key: composer-${{ hashFiles('**/composer.lock') }} restore-keys: composer- - name: Install Composer dependencies run: | composer install --no-progress --prefer-dist --optimize-autoloader - name: PHPStan uses: phpDocumentor/phpstan-ga@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: args: analyse src tests --configuration phpstan.neon psalm: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: 7.3 ini-values: memory_limit=2G, display_errors=On, error_reporting=-1 tools: pecl, psalm - name: Get composer cache directory id: composer-cache run: echo "::set-output name=dir::$(composer config cache-files-dir)" - name: Cache composer dependencies uses: actions/cache@v2 with: path: ${{ steps.composer-cache.outputs.dir }} key: composer-${{ hashFiles('**/composer.lock') }} restore-keys: composer- - name: Install Composer dependencies run: | composer install --no-progress --prefer-dist --optimize-autoloader - name: Psalm run: vendor/bin/psalm.phar --output-format=github