Skip to content

Workflow file for this run

name: 'Continuous Integration'
on:
pull_request: ~
push:
branches: [ main ]
jobs:
composer-validate:
name: Composer Validate
runs-on: ubuntu-latest
steps:
- name: 'Checkout Code'
uses: actions/checkout@v4
- name: 'Validate composer.json'
run: composer validate --strict --ansi
code-analysis:
needs: composer-validate
name: ${{ matrix.actions.name }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
actions:
- name: 'Coding Standard'
run: vendor/bin/ecs check --no-progress-bar --ansi
- name: 'Rector'
run: vendor/bin/rector process --dry-run --no-progress-bar --ansi
- name: 'Psalm'
run: vendor/bin/psalm --stats --no-progress --output-format=github --threads=$(nproc)
- name: 'PHPStan'
run: vendor/bin/phpstan analyze --no-progress --error-format=github --ansi --configuration=phpstan.dist.neon ./
steps:
- name: 'Checkout Code'
uses: actions/checkout@v4
- name: 'Setup PHP'
uses: shivammathur/setup-php@v2
with:
php-version: 8.2
coverage: none
tools: composer:v2
- name: 'Install Dependencies'
uses: "ramsey/composer-install@v2"
with:
composer-options: "--optimize-autoloader"
- run: ${{ matrix.actions.run }}
test:
needs: composer-validate
name: PHPUnit
runs-on: ubuntu-latest
strategy:
matrix:
php: [ '8.0', '8.2' ]
dependencies: [ highest, lowest ]
steps:
- name: 'Checkout Code'
uses: actions/checkout@v4
- name: 'Setup PHP'
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
coverage: none
tools: composer:v2
- name: 'Install Dependencies'
uses: "ramsey/composer-install@v2"
with:
composer-options: "--optimize-autoloader"
dependency-versions: ${{ matrix.dependencies }}
- name: 'Run PHPUnit'
run: vendor/bin/phpunit --testdox --colors=always --configuration=phpunit.xml.dist
code-coverage:
needs: test
name: PHPUnit Coverage
runs-on: ubuntu-latest
steps:
- name: 'Checkout Code'
uses: actions/checkout@v4
- name: 'Setup PHP'
uses: shivammathur/setup-php@v2
with:
php-version: 8.2
coverage: xdebug
tools: composer:v2
- name: 'Install Dependencies'
uses: "ramsey/composer-install@v2"
with:
composer-options: "--optimize-autoloader"
- name: 'Run PHPUnit with Coverage'
run: vendor/bin/phpunit --configuration=phpunit.xml.dist --coverage-clover=coverage.xml
- name: 'Upload coverage reports to Codecov'
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./coverage.xml
fail_ci_if_error: true