Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
240 changes: 111 additions & 129 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,146 +1,128 @@
name: CI

on:
push: ~
pull_request: ~
push:
pull_request:
schedule:
- cron: '44 14 * * *'

jobs:
tests:
name: Tests

runs-on: ubuntu-latest

strategy:
fail-fast: false
matrix:
php-version:
- "8.5"
- "8.4"
- "8.3"

php-code-coverage-version:
- "^13.0"
- "^12.3"

symfony-version:
- "^7.3"
- "^6.4.24"
- "^5.4.45"

dependencies:
- "highest"
- "lowest"
- "latest"

driver:
- "none"
- "xdebug"
- "pcov"

php-version: ['8.5', '8.4', '8.3']
php-code-coverage-version: ['8.3', '8.4', '8.5', ^12.3, ^13.0]
symfony-version: [^7.3, ^6.4.24, ^5.4.45]
dependencies: [highest, lowest, latest]
driver: [none, xdebug, pcov]
exclude:
- php-version: "8.3"
php-code-coverage-version: "^13.0"
- php-version: '8.3'
php-code-coverage-version: ^13.0

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2

- name: "Setup PHP"
uses: "shivammathur/setup-php@v2"
with:
php-version: ${{ matrix.php-version }}
coverage: ${{ matrix.driver }}
tools: cs2pr
ini-values: "error_reporting=E_ALL, display_errors=On"
env:
COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Verify PHP version used
run: |
php -v && php -m;

- 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: Validate composer.json
run: composer validate --strict

- name: Get composer cache directory
id: composercache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT

- name: Set up build cache
uses: "actions/cache@v4"
with:
path: |
${{ steps.composercache.outputs.dir }}
"build/php-code-coverage-cache"
".php-cs-fixer.cache"
key: php-${{ matrix.php-version }}-deps-${{ matrix.dependencies }}-php-code-coverage-${{ matrix.php-code-coverage-version }}-symfony-${{ matrix.symfony }}-${{ github.ref }}-${{ github.sha }}
restore-keys: |
php-${{ matrix.php-version }}-deps-${{ matrix.dependencies }}-php-code-coverage-${{ matrix.php-code-coverage-version }}-symfony-${{ matrix.symfony }}-${{ github.ref }}
php-${{ matrix.php-version }}-deps-${{ matrix.dependencies }}-php-code-coverage-${{ matrix.php-code-coverage-version }}-symfony-${{ matrix.symfony }}

- name: Force Symfony version
if: matrix.symfony-version != ''
run: |
composer global config allow-plugins.symfony/flex true
composer global require "symfony/flex"
composer config extra.symfony.require "${{ matrix.symfony-version }}"

- name: Force php-code-coverage version
if: matrix.php-code-coverage-version != ''
run: composer require --no-update "phpunit/php-code-coverage:${{ matrix.php-code-coverage-version }}"

- name: Remove PHP-CS-Fixer if not called
if: matrix.php-version != '8.3' || matrix.symfony-version != '^7.3' || matrix.dependencies != 'highest'
run: composer remove --dev --no-update "friendsofphp/php-cs-fixer";

- name: Install dependencies (low)
if: matrix.dependencies == 'lowest'
run: |
composer update --prefer-lowest --no-interaction --prefer-dist;
composer show;

- name: Install dependencies (high)
if: matrix.dependencies == 'highest'
run: |
composer update --no-interaction --prefer-dist;
composer show;

- name: Install dependencies (latest)
if: matrix.dependencies == 'latest'
run: |
composer config minimum-stability dev;
composer update --no-interaction --prefer-dist;
composer show;

- name: Install dependencies (force latest)
if: matrix.dependencies == 'force_latest'
run: |
composer config minimum-stability dev;
composer update --no-interaction --prefer-dist --ignore-platform-reqs;
composer show;

- name: PHPUnit
run: |
if [ "${{ matrix.driver }}" == "xdebug" ]; then
php -dmemory_limit=-1 vendor/phpunit/phpunit/phpunit --coverage-clover=build/coverage-phpunit/clover.xml --path-coverage;
elif [ "${{ matrix.driver }}" == "none" ]; then
php -dmemory_limit=-1 vendor/phpunit/phpunit/phpunit --no-coverage;
else
php -dmemory_limit=-1 vendor/phpunit/phpunit/phpunit --coverage-clover=build/coverage-phpunit/clover.xml;
fi;

- name: Behat
run: |
php -dmemory_limit=-1 vendor/behat/behat/bin/behat --strict;

- name: Check code style
if: matrix.php-version == '8.3' && matrix.symfony-version == '^7.3' && matrix.dependencies == 'highest'
run: vendor/bin/php-cs-fixer fix --verbose --dry-run --diff --allow-risky=yes
- uses: actions/checkout@v4
with:
fetch-depth: 2

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
coverage: ${{ matrix.driver }}
tools: cs2pr
ini-values: error_reporting=E_ALL, display_errors=On
env:
COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Verify PHP version used
run: |
php -v && php -m;

- 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: Validate composer.json
run: composer validate --strict

- name: Get composer cache directory
id: composercache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT

- name: Set up build cache
uses: actions/cache@v4
with:
path: |
${{ steps.composercache.outputs.dir }}
"build/php-code-coverage-cache"
".php-cs-fixer.cache"
key: php-${{ matrix.php-version }}-deps-${{ matrix.dependencies }}-php-code-coverage-${{ matrix.php-code-coverage-version }}-symfony-${{ matrix.symfony }}-${{ github.ref }}-${{ github.sha }}
restore-keys: |
php-${{ matrix.php-version }}-deps-${{ matrix.dependencies }}-php-code-coverage-${{ matrix.php-code-coverage-version }}-symfony-${{ matrix.symfony }}-${{ github.ref }}
php-${{ matrix.php-version }}-deps-${{ matrix.dependencies }}-php-code-coverage-${{ matrix.php-code-coverage-version }}-symfony-${{ matrix.symfony }}

- name: Force Symfony version
if: "matrix.symfony-version != ''"
run: |
composer global config allow-plugins.symfony/flex true
composer global require "symfony/flex"
composer config extra.symfony.require "${{ matrix.symfony-version }}"

- name: Force php-code-coverage version
if: "matrix.php-code-coverage-version != ''"
run: composer require --no-update "phpunit/php-code-coverage:${{ matrix.php-code-coverage-version }}"

- name: Remove PHP-CS-Fixer if not called
if: "matrix.php-version != '8.3' || matrix.symfony-version != '^7.3' || matrix.dependencies != 'highest'"
run: composer remove --dev --no-update "friendsofphp/php-cs-fixer";

- name: Install dependencies (low)
if: "matrix.dependencies == 'lowest'"
run: |
composer update --prefer-lowest --no-interaction --prefer-dist;
composer show;

- name: Install dependencies (high)
if: "matrix.dependencies == 'highest'"
run: |
composer update --no-interaction --prefer-dist;
composer show;

- name: Install dependencies (latest)
if: "matrix.dependencies == 'latest'"
run: |
composer config minimum-stability dev;
composer update --no-interaction --prefer-dist;
composer show;

- name: Install dependencies (force latest)
if: "matrix.dependencies == 'force_latest'"
run: |
composer config minimum-stability dev;
composer update --no-interaction --prefer-dist --ignore-platform-reqs;
composer show;

- name: PHPUnit
run: |
if [ "${{ matrix.driver }}" == "xdebug" ]; then
php -dmemory_limit=-1 vendor/phpunit/phpunit/phpunit --coverage-clover=build/coverage-phpunit/clover.xml --path-coverage;
elif [ "${{ matrix.driver }}" == "none" ]; then
php -dmemory_limit=-1 vendor/phpunit/phpunit/phpunit --no-coverage;
else
php -dmemory_limit=-1 vendor/phpunit/phpunit/phpunit --coverage-clover=build/coverage-phpunit/clover.xml;
fi;

- name: Behat
run: |
php -dmemory_limit=-1 vendor/behat/behat/bin/behat --strict;

- name: Check code style
if: "matrix.php-version == '8.3' && matrix.symfony-version == '^7.3' && matrix.dependencies == 'highest'"
run: vendor/bin/php-cs-fixer fix --verbose --dry-run --diff --allow-risky=yes