Skip to content

CI

CI #2325

Workflow file for this run

# https://help.github.com/en/categories/automating-your-workflow-with-github-actions
on:
push:
branches:
- main
pull_request:
schedule:
- cron: '3 3 * * 1'
name: CI
jobs:
php-lint:
name: PHP Lint
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
php-version:
- '7.3'
- '7.4'
- '8.0'
- '8.1'
- '8.2'
- '8.3'
- '8.4'
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
ini-file: development
coverage: none
- name: Show the Composer version
run: composer --version
- name: Show the Composer configuration
run: composer config --global --list
- name: PHP Lint
# Note: Unlike the "ci:php:lint" Composer script, we do not use the
# "parallel-lint" tool here. This allows us to lint the files without
# depending on any Composer packages.
run: find config src tests -name '*.php' -print0 | xargs -0 -n 1 -P 4 php -l
composer-validate:
name: Composer Validate
runs-on: ubuntu-22.04
strategy:
matrix:
php-version:
- '8.3'
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
ini-file: development
tools: composer:v2
coverage: none
- name: Show the Composer version
run: composer --version
- name: Show the Composer configuration
run: composer config --global --list
- name: Composer Validate
run: composer validate --no-check-all --no-check-lock --strict
static-analysis:
name: Static Analysis
runs-on: ubuntu-22.04
needs: [ php-lint, composer-validate ]
strategy:
fail-fast: false
matrix:
command:
- composer:normalize
- php:fixer
- php:md
- php:rector
- php:stan
php-version:
- '8.3'
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
ini-file: development
tools: composer:v2, phive
coverage: none
- name: Show the Composer version
run: composer --version
- name: Show the Composer configuration
run: composer config --global --list
- name: Cache dependencies installed with composer
uses: actions/cache@v4
with:
path: ~/.cache/composer
key: php${{ matrix.php-version }}-composer-${{ hashFiles('**/composer.json') }}
restore-keys: |
php${{ matrix.php-version }}-composer-
- name: Install Composer dependencies
run: composer install --no-progress
- name: Install development tools
run: phive --no-progress install --trust-gpg-keys 0FDE18AE1D09E19F60F6B1CBC00543248C87FB13,BBAB5DF0A0D6672989CF1869E82B2FB314E9906E,E7A745102ECC980F7338B3079093F8B32E4815AA,2DE50EB60C013FFFA831040D12CE0F1D262429A5
- name: Run Command
run: composer ci:${{ matrix.command }}
unit-tests:
name: Unit tests
runs-on: ubuntu-22.04
needs: [ php-lint, composer-validate ]
strategy:
fail-fast: false
matrix:
php-version:
- '7.3'
- '7.4'
- '8.0'
- '8.1'
- '8.2'
- '8.3'
- '8.4'
dependencies:
- lowest
- highest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
ini-file: development
tools: composer:v2
coverage: none
- name: Show the Composer version
run: composer --version
- name: Show the Composer configuration
run: composer config --global --list
- name: Cache dependencies installed with composer
uses: actions/cache@v4
with:
path: ~/.cache/composer
key: php${{ matrix.php-version }}-${{ matrix.dependencies }}-composer-${{ hashFiles('**/composer.json') }}
restore-keys: |
php${{ matrix.php-version }}-${{ matrix.dependencies }}-composer-
- name: Install Composer dependencies
run: |
if [[ "${{ matrix.dependencies }}" == 'lowest' ]]; then
DEPENDENCIES='--prefer-lowest';
else
DEPENDENCIES='';
fi;
composer install --no-progress;
composer update --with-dependencies --no-progress "${DEPENDENCIES}";
composer show;
- name: Run Tests
run: composer ci:tests:unit