build #152
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: build | |
on: | |
pull_request: | |
branches: [ "main" ] | |
push: | |
branches: [ "main" ] | |
schedule: | |
- cron: '0 16 * * 0' # sunday 16:00 | |
# Actions: | |
# shivammathur/setup-php@v2 # https://github.com/marketplace/actions/setup-php-action | |
jobs: | |
phpcs: | |
name: Coding standards (phpcs) | |
runs-on: "ubuntu-latest" | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: '8.1' | |
coverage: none | |
tools: cs2pr, phpcs | |
env: | |
fail-fast: true | |
- name: Coding standards (phpcs) | |
run: phpcs -q --report=checkstyle | cs2pr | |
php-cs-fixer: | |
name: Coding standards (php-cs-fixer) | |
runs-on: "ubuntu-latest" | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: '8.1' | |
coverage: none | |
tools: cs2pr, php-cs-fixer | |
env: | |
fail-fast: true | |
- name: Coding standards (php-cs-fixer) | |
run: php-cs-fixer fix --dry-run --format=checkstyle | cs2pr | |
phpunit: | |
name: Tests on PHP ${{ matrix.php-versions }} (phpunit) | |
runs-on: "ubuntu-latest" | |
strategy: | |
matrix: | |
php-versions: ['7.2', '7.3', '7.4', '8.0', '8.1'] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php-versions }} | |
coverage: none | |
tools: composer:v2 | |
env: | |
fail-fast: true | |
- 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@v3 | |
with: | |
path: ${{ steps.composer-cache.outputs.dir }} | |
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }} | |
restore-keys: ${{ runner.os }}-composer- | |
- name: Install project dependencies | |
run: composer upgrade --no-interaction --no-progress --prefer-dist | |
- name: Tests (phpunit) | |
run: vendor/bin/phpunit --testdox --verbose | |
phpstan: | |
name: Static analysis (phpstan) | |
runs-on: "ubuntu-latest" | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: '8.1' | |
coverage: none | |
tools: composer:v2, phpstan | |
env: | |
fail-fast: true | |
- 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@v3 | |
with: | |
path: ${{ steps.composer-cache.outputs.dir }} | |
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }} | |
restore-keys: ${{ runner.os }}-composer- | |
- name: Install project dependencies | |
run: composer upgrade --no-interaction --no-progress --prefer-dist | |
- name: Static analysis (phpstan) | |
run: phpstan analyse --no-progress --verbose | |
psalm: | |
name: Static analysis (psalm) | |
runs-on: "ubuntu-latest" | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: '8.1' | |
coverage: none | |
tools: composer:v2, psalm | |
env: | |
fail-fast: true | |
- 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@v3 | |
with: | |
path: ${{ steps.composer-cache.outputs.dir }} | |
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }} | |
restore-keys: ${{ runner.os }}-composer- | |
- name: Install project dependencies | |
run: composer upgrade --no-interaction --no-progress --prefer-dist | |
- name: Static analysis (psalm) | |
run: psalm --no-progress | |
infection: | |
name: Mutation Testing (infection) | |
runs-on: "ubuntu-latest" | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: '7.4' # cannot use a greater php version because of phpunit version compatibility | |
coverage: xdebug | |
tools: composer:v2 | |
env: | |
fail-fast: true | |
- 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@v3 | |
with: | |
path: ${{ steps.composer-cache.outputs.dir }} | |
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }} | |
restore-keys: ${{ runner.os }}-composer- | |
- name: Install project dependencies | |
run: composer upgrade --no-interaction --no-progress --prefer-dist | |
- name: Mutation testing (infection) | |
# run this way because infection phar is not working on php 7.4 | |
run: | | |
composer require --dev infection/infection --no-interaction --no-progress --prefer-dist | |
vendor/bin/infection --no-progress --no-interaction --show-mutations --logger-github |