Skip to content

Backport PHP 8.4 compatibility from 7.x branch #807

Backport PHP 8.4 compatibility from 7.x branch

Backport PHP 8.4 compatibility from 7.x branch #807

Workflow file for this run

name: 'CI'
on:
pull_request:
push:
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.2'
steps:
- name: 'Checkout code'
uses: actions/checkout@v3
- name: 'Setup Build'
uses: ./.github/actions/setup-build
with:
php-version: '${{ matrix.php-version }}'
composer-token: ${{ secrets.GITHUB_TOKEN }}
- 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
- name: "Psalm"
if: always()
run: |
composer require -W --dev vimeo/psalm:^5.0
vendor/bin/psalm
unit-tests:
name: "Unit Tests - PHP ${{ matrix.php-version }}, Sf ${{ matrix.symfony-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:
# Lowest possible configuration
- php-version: '8.0'
dependency-versions: 'lowest'
symfony-version: '5.4.*'
# Test against Symfony 5.4
- php-version: '8.3'
symfony-version: '5.4.*'
# Test against Symfony 6.*
- php-version: '8.3'
symfony-version: '6.*'
# Test against Symfony 6.4 on PHP8.4
- php-version: '8.4'
symfony-version: '6.4.*'
steps:
- name: 'Checkout code'
uses: actions/checkout@v3
- name: 'Setup Build'
uses: ./.github/actions/setup-build
with:
php-version: '${{ matrix.php-version }}'
composer-token: ${{ secrets.GITHUB_TOKEN }}
composer-dependency-versions: '${{ matrix.dependency-versions }}'
symfony-version: '${{ matrix.symfony-version }}'
- name: 'Run tests'
run: vendor/bin/phpunit
integration-tests:
name: 'Integration Tests - PHP ${{ matrix.php-version }}, Sf ${{ matrix.symfony-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:
include:
# Minimum PHP version
- php-version: '8.0'
symfony-version: '5.4.*'
# Test against Symfony 5.4
- php-version: '8.3'
symfony-version: '5.4.*'
# Test against Symfony 6.*
- php-version: '8.3'
symfony-version: '6.*'
# Test against Symfony 6.4 on PHP8.4
- php-version: '8.4'
symfony-version: '6.4.*'
steps:
- name: 'Checkout code'
uses: actions/checkout@v3
- name: 'Setup Build'
uses: ./.github/actions/setup-build
with:
php-version: '${{ matrix.php-version }}'
composer-token: ${{ secrets.GITHUB_TOKEN }}
composer-working-dir: app
symfony-version: '${{ matrix.symfony-version }}'
- name: 'Run tests'
run: app/vendor/bin/phpunit -c app
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.2'
steps:
- name: 'Checkout code'
uses: actions/checkout@v3
- name: 'Setup Build'
uses: ./.github/actions/setup-build
with:
php-version: '${{ matrix.php-version }}'
composer-token: ${{ secrets.GITHUB_TOKEN }}
- name: 'Run tests with coverage'
run: phpdbg -qrr 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