diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d27617a..cb03f4a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -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