| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242 |
- name: main
- on: [ push, pull_request ]
- jobs:
- test:
- runs-on: ubuntu-latest
- strategy:
- matrix:
- experimental:
- - false
- php-version:
- - '7.3'
- - '7.4'
- - '8.0'
- - '8.1'
- include:
- - php-version: '8.2'
- experimental: true
- name: PHP ${{ matrix.php-version }}
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Setup PHP, with composer and extensions
- uses: shivammathur/setup-php@v2
- with:
- php-version: ${{ matrix.php-version }}
- extensions: ctype, dom, gd, iconv, fileinfo, libxml, mbstring, simplexml, xml, xmlreader, xmlwriter, zip, zlib
- coverage: none
- - 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: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
- restore-keys: ${{ runner.os }}-composer-
- - name: Delete composer lock file
- id: composer-lock
- if: ${{ matrix.php-version == '8.1' || matrix.php-version == '8.2' }}
- run: |
- rm composer.lock
- echo "::set-output name=flags::--ignore-platform-reqs"
- - name: Install dependencies
- run: composer update --no-progress --prefer-dist --optimize-autoloader ${{ steps.composer-lock.outputs.flags }}
- - name: Setup problem matchers for PHP
- run: echo "::add-matcher::${{ runner.tool_cache }}/php.json"
- - name: Setup problem matchers for PHPUnit
- run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
- - name: "Run PHPUnit tests (Experimental: ${{ matrix.experimental }})"
- env:
- FAILURE_ACTION: "${{ matrix.experimental == true }}"
- run: vendor/bin/phpunit --verbose || $FAILURE_ACTION
- php-cs-fixer:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Setup PHP, with composer and extensions
- uses: shivammathur/setup-php@v2
- with:
- php-version: 7.4
- extensions: ctype, dom, gd, iconv, fileinfo, libxml, mbstring, simplexml, xml, xmlreader, xmlwriter, zip, zlib
- coverage: none
- tools: cs2pr
- - 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: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
- restore-keys: ${{ runner.os }}-composer-
- - name: Install dependencies
- run: composer install --no-progress --prefer-dist --optimize-autoloader
- - name: Code style with PHP-CS-Fixer
- run: ./vendor/bin/php-cs-fixer fix --format=checkstyle | cs2pr
- phpcs:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Setup PHP, with composer and extensions
- uses: shivammathur/setup-php@v2
- with:
- php-version: 7.4
- extensions: ctype, dom, gd, iconv, fileinfo, libxml, mbstring, simplexml, xml, xmlreader, xmlwriter, zip, zlib
- coverage: none
- tools: cs2pr
- - 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: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
- restore-keys: ${{ runner.os }}-composer-
- - name: Install dependencies
- run: composer install --no-progress --prefer-dist --optimize-autoloader
- - name: Code style with PHP_CodeSniffer
- run: ./vendor/bin/phpcs -q --report=checkstyle | cs2pr
- versions:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Setup PHP, with composer and extensions
- uses: shivammathur/setup-php@v2
- with:
- php-version: 7.4
- extensions: ctype, dom, gd, iconv, fileinfo, libxml, mbstring, simplexml, xml, xmlreader, xmlwriter, zip, zlib
- coverage: none
- tools: cs2pr
- - 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: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
- restore-keys: ${{ runner.os }}-composer-
- - name: Install dependencies
- run: composer install --no-progress --prefer-dist --optimize-autoloader
- - name: Code Version Compatibility check with PHP_CodeSniffer
- run: ./vendor/bin/phpcs -q --report-width=200 --report=summary,full src/ --standard=PHPCompatibility --runtime-set testVersion 7.3-
- phpstan:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Setup PHP, with composer and extensions
- uses: shivammathur/setup-php@v2
- with:
- php-version: 7.4
- extensions: ctype, dom, gd, iconv, fileinfo, libxml, mbstring, simplexml, xml, xmlreader, xmlwriter, zip, zlib
- coverage: none
- tools: cs2pr
- - 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: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
- restore-keys: ${{ runner.os }}-composer-
- - name: Install dependencies
- run: composer install --no-progress --prefer-dist --optimize-autoloader
- - name: Static analysis with PHPStan
- run: ./vendor/bin/phpstan analyse
- coverage:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Setup PHP, with composer and extensions
- uses: shivammathur/setup-php@v2
- with:
- php-version: 7.4
- extensions: ctype, dom, gd, iconv, fileinfo, libxml, mbstring, simplexml, xml, xmlreader, xmlwriter, zip, zlib
- coverage: pcov
- - 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: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
- restore-keys: ${{ runner.os }}-composer-
- - name: Install dependencies
- run: composer install --no-progress --prefer-dist --optimize-autoloader
- - name: Coverage
- run: |
- ./vendor/bin/phpunit --coverage-clover coverage-clover.xml
- curl -LO https://scrutinizer-ci.com/ocular.phar
- php ocular.phar code-coverage:upload --format=php-clover coverage-clover.xml
- release:
- runs-on: ubuntu-latest
- if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
- steps:
- - uses: actions/checkout@v2
- with:
- ref: ${{ github.ref }} # Otherwise our annotated tag is not fetched and we cannot get correct version
- # Create release
- - name: Get release info
- id: release-info
- run: |
- echo "::set-output name=subject::$(git tag --format '%(contents:subject)' --points-at)"
- git tag --format '%(contents:body)' --points-at > release-body.txt
- - uses: actions/create-release@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
- with:
- tag_name: ${{ github.ref }}
- release_name: ${{ steps.release-info.outputs.subject }}
- body_path: release-body.txt
|