CI #1674
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: CI | |
on: | |
push: ~ | |
pull_request: ~ | |
schedule: | |
- cron: '44 14 * * *' | |
jobs: | |
tests: | |
name: Tests | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
php-version: | |
- "8.3" | |
- "8.2" | |
- "8.1" | |
php-code-coverage-version: | |
- "^11.0" | |
- "^10.1" | |
symfony-version: | |
- "^7.0" | |
- "^6.0" | |
- "^5.0" | |
dependencies: | |
- "highest" | |
- "lowest" | |
- "latest" | |
driver: | |
- "none" | |
- "xdebug" | |
- "pcov" | |
exclude: | |
- php-version: "8.1" | |
symfony-version: "^7.0" | |
- php-version: "8.1" | |
php-code-coverage-version: "^11.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.1' || matrix.symfony-version != '^6.0' || 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; | |
if [ "${{ matrix.php-version }}" = "8.2" ] && [ "${{ matrix.driver }}" != "none" ]; then | |
composer global require scrutinizer/ocular; | |
~/.composer/vendor/bin/ocular code-coverage:upload --format=php-clover build/coverage-phpunit/clover.xml; | |
fi; | |
- name: Behat | |
run: | | |
php -dmemory_limit=-1 vendor/behat/behat/bin/behat --strict; | |
if [ "${{ matrix.php-version }}" = "8.2" ] && [ "${{ matrix.driver }}" != "none" ]; then | |
composer global require scrutinizer/ocular; | |
~/.composer/vendor/bin/ocular code-coverage:upload --format=php-clover build/coverage-behat/clover.xml; | |
fi; | |
- name: Check code style | |
if: matrix.php-version == '8.1' && matrix.symfony-version == '^6.0' && matrix.dependencies == 'highest' | |
run: vendor/bin/php-cs-fixer fix --verbose --dry-run --diff --allow-risky=yes |