123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- on:
- push:
- branches:
- - master
- pull_request:
- name: Qa workflow
- jobs:
- setup:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@master
- - 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: 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
- - name: Install phive
- run: make install-phive
- - name: Install PHAR dependencies
- run: tools/phive.phar --no-progress install --copy --trust-gpg-keys 4AA394086372C20A,D2CCAC42F6295E7D,E82B2FB314E9906E,8E730BA25823D8B5 --force-accept-unsigned
- phpunit-with-coverage:
- runs-on: ubuntu-latest
- name: Unit tests
- needs: setup
- steps:
- - uses: actions/checkout@master
- - 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: 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 89
- phpunit:
- name: Unit tests for PHP version ${{ matrix.php-versions }} on ${{ matrix.operating-system }}
- runs-on: ${{ matrix.operating-system }}
- strategy:
- matrix:
- operating-system:
- - ubuntu-latest
- - windows-latest
- - macOS-latest
- php-versions: ['7.2', '7.3', '7.4']
- 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@master
- - 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@v1
- with:
- path: ${{ steps.cache-env.outputs.dir }}
- key: ${{ steps.cache-env.outputs.key }}
- - name: Setup PHP
- uses: shivammathur/setup-php@master
- with:
- php-version: ${{ matrix.php-versions }}
- extension: ${{ env.extensions }}
- ini-values: memory_limit=2G, display_errors=On, error_reporting=-1
- - 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: Get composer cache directory
- id: composer-cache
- run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- - name: Cache dependencies
- uses: actions/cache@v1
- with:
- path: ${{ steps.composer-cache.outputs.dir }}
- key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
- restore-keys: ${{ runner.os }}-composer-
- - name: Install dependencies
- run: composer install --no-interaction --prefer-dist --optimize-autoloader
- - name: Run PHPUnit
- continue-on-error: true
- run: php tools/phpunit
- codestyle:
- runs-on: ubuntu-latest
- needs: [setup, phpunit]
- steps:
- - uses: actions/checkout@master
- - 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: Code style check
- uses: phpDocumentor/coding-standard@master
- with:
- args: -s
- phpstan:
- runs-on: ubuntu-latest
- needs: [setup, phpunit]
- steps:
- - uses: actions/checkout@master
- - 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: PHPStan
- uses: phpDocumentor/phpstan-ga@0.12.3
- 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@master
- - 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@v1
- with:
- path: ${{ steps.cache-env.outputs.dir }}
- key: ${{ steps.cache-env.outputs.key }}
- - name: Setup PHP
- uses: shivammathur/setup-php@master
- with:
- php-version: ${{ matrix.php-versions }}
- extension: ${{ env.extensions }}
- tools: psalm
- 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 dependencies
- uses: actions/cache@v1
- with:
- path: ${{ steps.composer-cache.outputs.dir }}
- key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
- restore-keys: ${{ runner.os }}-composer-
- - name: Install dependencies
- run: composer install --no-interaction --prefer-dist --optimize-autoloader
- - name: Run psalm
- run: psalm --output-format=github
- bc_check:
- name: BC Check
- runs-on: ubuntu-latest
- needs: [setup, phpunit]
- steps:
- - uses: actions/checkout@master
- - name: fetch tags
- run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
- - name: BC Check
- uses: docker://nyholm/roave-bc-check-ga
|