Skip to content

Commit 0099ce2

Browse files
committed
ci: drop PHP 8.1, pin PHPUnit to 11.x, pin webpack for Docusaurus build
PHP 8.1 reached end-of-life in 2025 so drop it from the test matrix and bump the runtime requirement to >=8.2. On the matrix side this also clears a pre-existing red CI caused by PHPUnit 12.x (PHP >=8.3) now resolving over PHPUnit 11.x on 8.1. Pin `phpunit/phpunit` to `^11.0` explicitly — PHPUnit 11 is the latest major that supports PHP 8.2, and 12.x's PHP >=8.3 requirement is what was breaking composer resolution for every PR opened after PHPUnit 12.5.22 shipped. Acknowledge advisory PKSA-5jz8-6tcw-pbk4 (GHSA-qrr6-mg7r-m243) with a targeted audit-ignore carrying the threat-model rationale. The advisory describes argument injection via newlines in PHP INI values forwarded to child processes; phpunit is require-dev only and the attack surface is phpunit config + CLI args authored by maintainers/CI, which carry the same trust boundary as any other committed code. No fix has been backported to PHPUnit 10.x or 11.x. Revisit when a backport ships or when we bump min PHP to 8.3 and can move to ^12.5.22. For the Docusaurus docs workflow, pin webpack to 5.88.2 via a package.json `resolutions` block. Webpack versions newer than 5.88.x tightened ProgressPlugin schema validation and reject options that webpackbar@5 (transitively pinned by @docusaurus/core 2.4.3) passes through, producing the "options has an unknown property 'name' / 'color' / 'reporters' / 'reporter'" build failure on every PR.
1 parent dafc8b2 commit 0099ce2

3 files changed

Lines changed: 12 additions & 4 deletions

File tree

.github/workflows/continuous_integration.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
strategy:
2323
matrix:
2424
install-args: ['', '--prefer-lowest']
25-
php-version: ['8.1', '8.2', '8.3', '8.4']
25+
php-version: ['8.2', '8.3', '8.4']
2626
fail-fast: false
2727

2828
steps:
@@ -73,7 +73,7 @@ jobs:
7373
run: "composer phpstan"
7474

7575
- name: "Run coding standard checks with squizlabs/php_codesniffer on minimum supported PHP version"
76-
if: matrix.php-version == '8.1'
76+
if: matrix.php-version == '8.2'
7777
run: composer cs-check
7878

7979
- name: "Archive code coverage results"

composer.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
}
1111
],
1212
"require": {
13-
"php": ">=8.1",
13+
"php": ">=8.2",
1414
"ext-json": "*",
1515
"composer/package-versions-deprecated": "^1.8",
1616
"phpdocumentor/reflection-docblock": "^5.4",
@@ -35,7 +35,7 @@
3535
"php-coveralls/php-coveralls": "^2.7",
3636
"phpstan/extension-installer": "^1.4",
3737
"phpstan/phpstan": "^2.0",
38-
"phpunit/phpunit": "^10.5 || ^11.0 || ^12.0",
38+
"phpunit/phpunit": "^11.0",
3939
"symfony/var-dumper": "^6.4"
4040
},
4141
"suggest": {
@@ -68,6 +68,11 @@
6868
"composer/package-versions-deprecated": true,
6969
"dealerdirect/phpcodesniffer-composer-installer": true,
7070
"phpstan/extension-installer": true
71+
},
72+
"audit": {
73+
"ignore": {
74+
"PKSA-5jz8-6tcw-pbk4": "PHPUnit argument-injection via newline in INI values forwarded to child PHP processes (GHSA-qrr6-mg7r-m243). phpunit is a require-dev dependency; the attack surface is INI values in phpunit config or CLI args, which are authored by maintainers/CI and carry the same trust as any other committed code. No fix available for PHPUnit 10.x or 11.x yet — revisit when backport ships or when we bump min PHP to 8.3 and can move to ^12.5.22."
75+
}
7176
}
7277
}
7378
}

website/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616
"react": "^17.0.1",
1717
"react-dom": "^17.0.1"
1818
},
19+
"resolutions": {
20+
"webpack": "5.88.2"
21+
},
1922
"browserslist": {
2023
"production": [
2124
">0.5%",

0 commit comments

Comments
 (0)