CI #1775
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 15 * * *' | |
jobs: | |
tests: | |
name: Tests | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
php-version: | |
- "8.4" | |
- "8.3" | |
- "8.2" | |
- "8.1" | |
dependencies: | |
- "highest" | |
- "lowest" | |
- "latest" | |
datapack: | |
- "" | |
- "php-coord/datapack-africa" | |
- "php-coord/datapack-antarctic" | |
- "php-coord/datapack-arctic" | |
- "php-coord/datapack-asia" | |
- "php-coord/datapack-europe" | |
- "php-coord/datapack-northamerica" | |
- "php-coord/datapack-oceania" | |
- "php-coord/datapack-southamerica" | |
steps: | |
- 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=5.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 }}:dev-master"; | |
- name: Remove PHP-CS-Fixer if not called | |
if: matrix.php-version != '8.2' || 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.2" ] && [ "${{ matrix.dependencies }}" = "highest" ]; then | |
php -dmemory_limit=-1 vendor/phpunit/phpunit/phpunit --coverage-clover=build/coverage-phpunit/clover.xml --exclude-group=integration --exclude-group=gigs; | |
composer global require scrutinizer/ocular; | |
~/.composer/vendor/bin/ocular code-coverage:upload --format=php-clover build/coverage-phpunit/clover.xml; | |
elif [ "${{ matrix.php-version }}" = "8.1" ] || [ "${{ matrix.dependencies }}" = "lowest" ]; then | |
php -dmemory_limit=-1 vendor/phpunit/phpunit/phpunit --exclude-group=integration,gigs --no-coverage; | |
else | |
php -dmemory_limit=-1 vendor/phpunit/phpunit/phpunit --exclude-group=integration --exclude-group=gigs --no-coverage; | |
fi; | |
- name: PHPUnit (Integration) | |
run: php -dmemory_limit=-1 vendor/phpunit/phpunit/phpunit --group=integration --no-coverage; | |
- name: PHPUnit (GIGS) | |
run: php -dmemory_limit=-1 vendor/phpunit/phpunit/phpunit --group=gigs --no-coverage; | |
- name: Check code style | |
if: matrix.php-version == '8.2' && matrix.dependencies == 'highest' && matrix.datapack == '' | |
run: vendor/bin/php-cs-fixer fix --verbose --dry-run --diff --allow-risky=yes |