Skip to content

CI

CI #1301

Workflow file for this run

name: 'CI'
on:
pull_request:
push:
schedule:
- cron: '15 8 * * *'
jobs:
coding-standards:
name: 'Coding Standards - PHP ${{ matrix.php-version }}'
runs-on: 'ubuntu-latest'
# We want to run on external PRs, but not on our own internal PRs as they'll be run by the push to the branch.
if: ${{ !(github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) }}
strategy:
fail-fast: false
matrix:
php-version:
- '8.3'
steps:
- name: 'Checkout code'
uses: actions/checkout@v2
- name: 'Setup PHP'
uses: shivammathur/setup-php@v2
with:
coverage: 'none'
extensions: 'json'
php-version: '${{ matrix.php-version }}'
tools: php-cs-fixer
- name: 'Display PHP versions'
run: |
php -r 'foreach (get_loaded_extensions() as $extension) echo $extension . " " . phpversion($extension) . PHP_EOL;'
php -i
- name: 'Install Composer dependencies'
uses: ramsey/composer-install@v1
with:
composer-options: '--prefer-dist'
- name: 'Display dependencies versions'
run: composer show
- name: "PHP Coding Standards Fixer"
run: php-cs-fixer fix --dry-run --diff --using-cache=no
- name: "PHP Code Style Sniffer"
if: always()
run: vendor/bin/phpcs --standard=php_cs.xml src tests
- name: "Psalm"
if: always()
run: vendor/bin/psalm
tests:
name: "Unit Tests - PHP ${{ matrix.php-version }}${{ matrix.dependency-versions && format(', Deps: {0}', matrix.dependency-versions) }}"
runs-on: ubuntu-latest
# We want to run on external PRs, but not on our own internal PRs as they'll be run by the push to the branch.
if: ${{ !(github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) }}
strategy:
fail-fast: false
matrix:
include:
- php-version: '7.1.3'
dependency-versions: 'lowest' # Lowest possible configuration
- php-version: '7.4' # Highest possible 7 version
- php-version: '8.3' # Highest possible 8 version
steps:
- name: 'Checkout code'
uses: actions/checkout@v2
- name: 'Setup PHP'
uses: shivammathur/setup-php@v2
with:
coverage: 'none'
extensions: 'json'
php-version: '${{ matrix.php-version }}'
- name: 'Display PHP versions'
run: |
php -r 'foreach (get_loaded_extensions() as $extension) echo $extension . " " . phpversion($extension) . PHP_EOL;'
php -i
- name: 'Install Composer dependencies'
uses: ramsey/composer-install@v1
with:
composer-options: '--prefer-dist'
dependency-versions: '${{ matrix.dependency-versions }}'
- name: 'Display dependencies versions'
run: composer show
- name: 'Run tests'
run: vendor/bin/phpunit
code-coverage:
name: 'Code Coverage - PHP ${{ matrix.php-version }}'
runs-on: 'ubuntu-latest'
# We want to run on external PRs, but not on our own internal PRs as they'll be run by the push to the branch.
if: ${{ !(github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) }}
strategy:
fail-fast: false
matrix:
php-version:
- '8.3'
steps:
- name: 'Checkout code'
uses: actions/checkout@v2
- name: 'Setup PHP'
uses: shivammathur/setup-php@v2
with:
coverage: 'pcov'
extensions: 'json'
php-version: '${{ matrix.php-version }}'
- name: 'Display PHP versions'
run: |
php -r 'foreach (get_loaded_extensions() as $extension) echo $extension . " " . phpversion($extension) . PHP_EOL;'
php -i
- name: 'Install Composer dependencies'
uses: ramsey/composer-install@v1
with:
composer-options: '--prefer-dist'
- name: 'Display dependencies versions'
run: composer show
- name: 'Run tests with coverage'
run: vendor/bin/phpunit --coverage-clover coverage/clover.xml
- name: 'Send Coverage to Codecov'
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: coverage/clover.xml
flags: unittests
fail_ci_if_error: true