diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 92b06c168..28810a962 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,6 +15,8 @@ jobs: fail-fast: false matrix: php-version: + - "8.3" + - "8.2" - "8.1" - "8.0" - "7.4" @@ -36,100 +38,101 @@ jobs: - "php-coord/datapack-southamerica" steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 2 - - - name: "Setup PHP" - uses: "shivammathur/setup-php@v2" - with: - php-version: ${{ matrix.php-version }} - ini-values: "zend.assertions=1, assert.exception=1, error_reporting=E_ALL, display_errors=On" - coverage: "xdebug" - tools: cs2pr - 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: Set COMPOSER_ROOT_VERSION to allow branches to not fail build - run: echo "COMPOSER_ROOT_VERSION=4.x-dev" >> $GITHUB_ENV - - - name: Get composer cache directory - id: composercache - run: echo "::set-output name=dir::$(composer config cache-files-dir)" - - - name: Set up build cache - uses: "actions/cache@v2" - with: - path: | - ${{ steps.composercache.outputs.dir }} - "build/php-code-coverage-cache" - ".php-cs-fixer.cache" - key: php-${{ matrix.php-version }}-deps-${{ matrix.dependencies }}-datapack-${{ matrix.datapack }}-${{ github.ref }}-${{ github.sha }} - restore-keys: | - php-${{ matrix.php-version }}-deps-${{ matrix.dependencies }}-datapack-${{ matrix.datapack }}-${{ github.ref }} - php-${{ matrix.php-version }}-deps-${{ matrix.dependencies }}-datapack-${{ matrix.datapack }} - - - name: Remove datapacks - run: composer remove --dev --no-update "php-coord/datapack*"; - - - name: Add back selected datapack - if: matrix.datapack != '' - run: composer require --dev --no-update "${{ matrix.datapack }}:^1.0"; - - - name: Remove PHP-CS-Fixer if not called - if: matrix.php-version != '8.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 --classmap-authoritative; - composer show; - - - name: Install dependencies (high) - if: matrix.dependencies == 'highest' - run: | - composer update --no-interaction --prefer-dist --classmap-authoritative; - composer show; - - - name: Install dependencies (latest) - if: matrix.dependencies == 'latest' - run: | - composer config minimum-stability dev; - composer update --no-interaction --prefer-dist --classmap-authoritative; - composer show - - - name: Install dependencies (force latest) - if: matrix.dependencies == 'force_latest' - run: | - composer config minimum-stability dev; - composer update --no-interaction --prefer-dist --classmap-authoritative --ignore-platform-reqs; - composer show - - - name: PHPUnit (Unit) - run: | - php -dmemory_limit=-1 vendor/phpunit/phpunit/phpunit --coverage-clover=build/coverage-phpunit/clover.xml --exclude-group=integration; - if [ "${{ matrix.php-version }}" = "8.0" ] && [ "${{ matrix.dependencies }}" = "highest" ]; then - composer global require scrutinizer/ocular; - ~/.composer/vendor/bin/ocular code-coverage:upload --format=php-clover build/coverage-phpunit/clover.xml; - fi; - - - name: PHPUnit (Integration) - run: php -dmemory_limit=-1 vendor/phpunit/phpunit/phpunit --group=integration --no-coverage; - - - name: Check code style - if: matrix.php-version == '8.0' && matrix.dependencies == 'highest' && matrix.datapack == '' - run: vendor/bin/php-cs-fixer fix --verbose --dry-run --diff --allow-risky=yes --format=checkstyle | cs2pr + - uses: actions/checkout@v4 + with: + fetch-depth: 2 + + - name: "Setup PHP" + uses: "shivammathur/setup-php@v2" + with: + php-version: ${{ matrix.php-version }} + ini-values: "zend.assertions=1, assert.exception=1, error_reporting=E_ALL, display_errors=On" + coverage: "xdebug" + 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: Set COMPOSER_ROOT_VERSION to allow branches to not fail build + run: echo "COMPOSER_ROOT_VERSION=4.x-dev" >> $GITHUB_ENV + + - 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 }}-datapack-${{ matrix.datapack }}-${{ github.ref }}-${{ github.sha }} + restore-keys: | + php-${{ matrix.php-version }}-deps-${{ matrix.dependencies }}-datapack-${{ matrix.datapack }}-${{ github.ref }} + php-${{ matrix.php-version }}-deps-${{ matrix.dependencies }}-datapack-${{ matrix.datapack }} + + - name: Remove datapacks + run: composer remove --dev --no-update "php-coord/datapack*"; + + - name: Add back selected datapack + if: matrix.datapack != '' + run: composer require --dev --no-update "${{ matrix.datapack }}:^1.0"; + + - name: Remove PHP-CS-Fixer if not called + if: matrix.php-version != '8.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 --classmap-authoritative; + composer show; + + - name: Install dependencies (high) + if: matrix.dependencies == 'highest' + run: | + composer update --no-interaction --prefer-dist --classmap-authoritative; + composer show; + + - name: Install dependencies (latest) + if: matrix.dependencies == 'latest' + run: | + composer config minimum-stability dev; + composer update --no-interaction --prefer-dist --classmap-authoritative; + composer show; + + - name: Install dependencies (force latest) + if: matrix.dependencies == 'force_latest' + run: | + composer config minimum-stability dev; + composer update --no-interaction --prefer-dist --classmap-authoritative --ignore-platform-reqs; + composer show; + + - name: PHPUnit (Unit) + run: | + if [ "${{ matrix.php-version }}" = "8.0" ] && [ "${{ matrix.dependencies }}" = "highest" ]; then + php -dmemory_limit=-1 vendor/phpunit/phpunit/phpunit --coverage-clover=build/coverage-phpunit/clover.xml --exclude-group=integration; + composer global require scrutinizer/ocular; + ~/.composer/vendor/bin/ocular code-coverage:upload --format=php-clover build/coverage-phpunit/clover.xml; + else + php -dmemory_limit=-1 vendor/phpunit/phpunit/phpunit --exclude-group=integration --no-coverage; + fi; + + - name: PHPUnit (Integration) + run: php -dmemory_limit=-1 vendor/phpunit/phpunit/phpunit --group=integration --no-coverage; + + - name: Check code style + if: matrix.php-version == '8.0' && matrix.dependencies == 'highest' && matrix.datapack == '' + run: vendor/bin/php-cs-fixer fix --verbose --dry-run --diff --allow-risky=yes