Skip to content

CI

CI #1848

Workflow file for this run

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