Skip to content

Code Quality

Code Quality #152

Workflow file for this run

name: 'Code Quality'
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main", "dev" ]
schedule:
- cron: "0 0 * * *"
permissions:
contents: read
jobs:
generate-matrix:
name: 'Generate PHP Version Matrix'
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
first: ${{ steps.set-first.outputs.first }}
steps:
- name: PHP-Setup
uses: shivammathur/setup-php@v2
with:
php-version: 'latest'
- name: Checkout
uses: actions/checkout@v4
- name: Fetch PHP versions
id: set-matrix
run: |
php .github/scripts/version_matrix.php > matrix.json
echo "matrix=$(cat matrix.json)" >> $GITHUB_OUTPUT
- name: Extract first version
id: set-first
run: |
matrix='${{ steps.set-matrix.outputs.matrix }}'
first=$(echo "$matrix" | jq -r '.[0]')
echo "first=$first" >> $GITHUB_OUTPUT
code-quality:
needs: [ generate-matrix ]
name: 'PHP Code Quality'
runs-on: ubuntu-latest
steps:
- name: PHP-Setup
uses: shivammathur/setup-php@v2
with:
php-version: ${{ needs.generate-matrix.outputs.first }}
- name: Checkout
uses: actions/checkout@v4
- name: Composer cache packages
id: composer-cache
uses: actions/cache@v4
with:
path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-php-
- name: Composer install
run: |
composer install --prefer-dist --no-progress
- name: Run PHPLint
run: composer phplint
- name: Run RectorPHP
run: composer rector-dry
- name: Run PHPStan
run: composer phpstan
- name: Run ECS
run: composer ecs-dry
unittest:
needs: [ generate-matrix, code-quality ]
name: 'PHP Unit and E2E Tests'
runs-on: ubuntu-latest
strategy:
matrix:
version: ${{ fromJson(needs.generate-matrix.outputs.matrix) }}
steps:
- name: PHP-Setup
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.version }}
- name: Checkout
uses: actions/checkout@v4
- name: Composer cache packages
id: composer-cache
uses: actions/cache@v4
with:
path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-php-
- name: Composer install
run: |
composer install --prefer-dist --no-progress
- name: Run PHPUnitTests
run: composer unittest
code_coverage:
needs: [ unittest ]
name: 'PHP Code Coverage'
runs-on: ubuntu-latest
steps:
- name: PHP-Setup
uses: shivammathur/setup-php@v2
with:
php-version: ${{ needs.generate-matrix.outputs.first }}
- name: Checkout
uses: actions/checkout@v4
- name: Composer install
run: |
composer install --prefer-dist --no-progress
- name: Run tests and collect coverage
run: vendor/bin/phpunit --coverage-clover coverage.xml
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
slug: wundii/data-mapper-symfony-bundle