Skip to content

CI

CI #1803

Workflow file for this run

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