123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- name: build
- on:
- - push
- - pull_request
- jobs:
- tests:
- name: PHP ${{ matrix.php }} Test on ${{ matrix.os }}
- env:
- extensions: bz2, dom, iconv, fileinfo, openssl, xml, zlib
- key: cache-v1
- PHPUNIT_COVERAGE: 0
- PHP_INI: date.timezone='UTC', memory_limit=-1, opcache.enable=1, opcache.enable_cli=1
- strategy:
- matrix:
- os:
- - ubuntu-latest
- - windows-latest
- - macos-latest
- php:
- - '7.4'
- - '8.0'
- - '8.1'
- runs-on: ${{ matrix.os }}
- steps:
- -
- name: Checkout
- uses: actions/checkout@v1
- -
- name: Install linux dependencies
- if: matrix.os == 'ubuntu-latest'
- run: sudo apt-get install unzip p7zip-full
- -
- name: Install windows dependencies
- if: matrix.os == 'windows-latest'
- run: choco install zip unzip 7zip
- -
- name: Install macos dependencies
- if: matrix.os == 'macos-latest'
- run: brew install zip unzip p7zip
- -
- name: Disable JIT for PHP 8 on Linux and Mac
- if: (matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest') && matrix.php != '7.4'
- run: echo "PHP_INI=\"${PHP_INI}, opcache.jit=0, opcache.jit_buffer_size=0\"" >> $GITHUB_ENV
- -
- name: Disable JIT for PHP 8 on Windows
- if: matrix.os == 'windows-latest' && matrix.php != '7.4'
- run: echo "PHP_INI=\"$PHP_INI, opcache.jit=0, opcache.jit_buffer_size=0\"" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
- -
- name: Install PHP with extensions
- uses: shivammathur/setup-php@v2
- with:
- php-version: ${{ matrix.php }}
- extensions: ${{ env.extensions }}
- coverage: pcov
- ini-values: ${{ env.PHP_INI }}
- tools: composer:v2, cs2pr
- -
- name: Determine composer cache directory on Linux or MacOS
- if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest'
- run: echo "COMPOSER_CACHE_DIR=$(composer config cache-dir)" >> $GITHUB_ENV
- -
- name: Determine composer cache directory on Windows
- if: matrix.os == 'windows-latest'
- run: echo "COMPOSER_CACHE_DIR=~\AppData\Local\Composer" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
- -
- name: Set coverage args
- if: matrix.os == 'ubuntu-latest' && matrix.php == '7.4'
- run: echo "PHPUNIT_COVERAGE=1" >> $GITHUB_ENV
- -
- name: Cache composer dependencies
- uses: actions/cache@v2
- with:
- path: ${{ env.COMPOSER_CACHE_DIR }}
- key: php${{ matrix.php }}-composer-${{ hashFiles('**/composer.json') }}
- restore-keys: php${{ matrix.php }}-composer-
- -
- name: Check PHP Version
- run: php -v
- -
- name: Check Composer Version
- run: composer -V
- -
- name: Check PHP Extensions
- run: php -m
- -
- name: Validate composer.json and composer.lock
- run: composer validate
- -
- name: Install dependencies with composer
- run: composer update --prefer-dist --no-interaction --no-progress --optimize-autoloader --ansi
- -
- name: Run tests with phpunit
- if: env.PHPUNIT_COVERAGE == 0
- run: vendor/bin/phpunit -v --testsuite "all_tests" --group small,medium,large
- -
- name: Run tests with phpunit and coverage
- if: env.PHPUNIT_COVERAGE == 1
- run: vendor/bin/phpunit -v --coverage-clover=coverage.clover --testsuite "all_tests" --group small,medium,large
- -
- name: Static analysis
- run: vendor/bin/psalm --shepherd --stats --output-format=checkstyle | cs2pr --graceful-warnings --colorize
- -
- name: Upload code coverage scrutinizer
- if: env.PHPUNIT_COVERAGE == 1
- run: |
- wget https://scrutinizer-ci.com/ocular.phar
- php ocular.phar code-coverage:upload --format=php-clover coverage.clover
|