Skip to content

43 enable php 81 features with backward compatibility #288

43 enable php 81 features with backward compatibility

43 enable php 81 features with backward compatibility #288

Workflow file for this run

# https://help.github.com/en/categories/automating-your-workflow-with-github-actions
on:
pull_request:
push:
branches:
- master
jobs:
composer-validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: shivammathur/setup-php@v2
with:
coverage: none
extensions: mbstring
php-version: 8.1
- run: composer validate --strict
static-code-analysis:
runs-on: ubuntu-latest
continue-on-error: ${{ matrix.php-version == '8.4' }}
strategy:
fail-fast: false
matrix:
php-version: ["8.1", "8.2", "8.3", "8.4"]
dependencies: [lowest, highest]
steps:
- uses: actions/checkout@v4
- uses: shivammathur/setup-php@v2
with:
coverage: none
extensions: mbstring
php-version: "${{ matrix.php-version }}"
- uses: ramsey/composer-install@v3
with:
dependency-versions: "${{ matrix.dependencies }}"
- name: "Cache Composer"
uses: actions/cache@v4
with:
path: ~/.composer/cache/files
key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ matrix.dependencies }}-${{ hashFiles('**/composer.lock') }}
restore-keys: |
composer-${{ runner.os }}-${{ matrix.php-version }}-${{ matrix.dependencies }}-
composer-${{ runner.os }}-
- run: vendor/bin/phpstan analyse --configuration=phpstan.neon
tests:
name: "Tests - PHP ${{ matrix.php-version }}, ${{ matrix.dependencies }}"
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php-version: ["8.1", "8.2", "8.3", "8.4"]
dependencies: [lowest, highest]
steps:
- uses: actions/checkout@v4
- uses: shivammathur/setup-php@v2
with:
coverage: none
extensions: mbstring
php-version: "${{ matrix.php-version }}"
- uses: ramsey/composer-install@v3
with:
dependency-versions: "${{ matrix.dependencies }}"
- name: "Cache Composer"
uses: actions/cache@v4
with:
path: ~/.composer/cache/files
key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ matrix.dependencies }}-${{ hashFiles('**/composer.lock') }}
restore-keys: |
composer-${{ runner.os }}-${{ matrix.php-version }}-${{ matrix.dependencies }}-
composer-${{ runner.os }}-
- run: vendor/bin/phpunit
code-coverage:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: shivammathur/setup-php@v2
with:
coverage: pcov
extensions: mbstring
php-version: 8.3
- uses: ramsey/composer-install@v3
- name: "Cache Composer"
uses: actions/cache@v4
with:
path: ~/.composer/cache/files
key: composer-${{ runner.os }}-coverage-${{ hashFiles('**/composer.lock') }}
restore-keys: |
composer-${{ runner.os }}-coverage-
- run: vendor/bin/phpunit --coverage-clover=.build/logs/clover.xml
# Not using v4 due to the breaking changes described in https://github.com/codecov/codecov-action/releases/tag/v4.0.0
- uses: codecov/codecov-action@v3
# Optionale Smoke-Prüfung des Downgrade-Prozesses (nur manueller Start)
downgrade-smoke:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: "Install PHP 8.1 + tools"
uses: shivammathur/setup-php@v2
with:
php-version: 8.1
coverage: none
- uses: ramsey/composer-install@v3
- name: "Downgrade src"
run: vendor/bin/rector process src --config build/rector-downgrade-php-74.php --ansi
- name: "Prepare downgraded artifact"
run: |
cp build/composer-php-74.json composer.json
tar -czf downgraded-src.tar.gz src composer.json
- name: "Validate downgraded composer.json under PHP 7.4"
uses: shivammathur/setup-php@v2
with:
php-version: 7.4
coverage: none
- run: composer validate --no-check-publish
- name: "List downgraded files"
run: tar -tzf downgraded-src.tar.gz | head -n 40
downgraded-static-analysis:
name: "Downgraded Static Analysis"
needs: downgrade-smoke
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: "Setup PHP 8.1 (Rector + tools)"
uses: shivammathur/setup-php@v2
with:
php-version: 8.1
coverage: none
- uses: ramsey/composer-install@v3
- name: "Create downgraded copy (retain original composer for analysis)"
run: |
rsync -a --exclude vendor ./ downgraded/
vendor/bin/rector process downgraded/src downgraded/tests --config build/rector-downgrade-php-74.php --ansi
- name: "Install deps for analysis (original composer)"
working-directory: downgraded
run: composer install --no-interaction --no-progress
- name: "PHPStan on downgraded code"
working-directory: downgraded
run: vendor/bin/phpstan analyse downgraded/src downgraded/tests --configuration=phpstan.neon --memory-limit=1G
- name: "Switch to downgraded composer"
run: cp build/composer-php-74.json downgraded/composer.json
- name: "Composer validate downgraded (PHP 8.1)"
working-directory: downgraded
run: composer validate --no-check-publish
- name: "Syntax lint under PHP 7.4"
uses: shivammathur/setup-php@v2
with:
php-version: 7.4
coverage: none
- name: "Run syntax check"
run: |
find downgraded/src -type f -name '*.php' -print0 | xargs -0 -n1 -P4 php -l > /dev/null
downgraded-tests:
name: "Downgraded Tests (PHP 7.4)"
needs: downgrade-smoke
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: "Setup PHP 8.1 (Rector)"
uses: shivammathur/setup-php@v2
with:
php-version: 8.1
coverage: none
- uses: ramsey/composer-install@v3
- name: "Create downgraded copy"
run: |
rsync -a --exclude vendor ./ downgraded/
vendor/bin/rector process downgraded/src downgraded/tests --config build/rector-downgrade-php-74.php --ansi
cp build/composer-php-74.json downgraded/composer.json
rm -f downgraded/composer.lock
- name: "Switch to PHP 7.4"
uses: shivammathur/setup-php@v2
with:
php-version: 7.4
coverage: none
- name: "Add phpunit dev dependency"
working-directory: downgraded
run: composer require --dev phpunit/phpunit:^9.6 --no-interaction --no-progress
- name: "Run downgraded tests"
working-directory: downgraded
run: vendor/bin/phpunit || (echo 'Downgraded tests failed' && exit 1)