Repository navigation
ci: add PHP 8.5 and non-blocking PHP 8.6 matrix legs - #436
Conversation
Mirror Cacti/cacti#8633: run PHP 8.5 and 8.6 as experimental (non-blocking) matrix legs via continue-on-error so bleeding-edge toolchain gaps do not turn CI red. PHP 8.5 is provisioned through shivammathur/setup-php as usual. PHP 8.6 is still pre-release and the setup-php nightly ships ABI-skewed bundled extensions, so the 8.6 leg provisions a coherent CLI from Ondrej Sury's PPA instead. The Ondrej PPA has no php8.6-xdebug build yet, so the patch-coverage gate (which needs a coverage driver) is skipped on the 8.6 leg only; the 8.5 leg keeps it via setup-php's xdebug. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🟡 Changes recommended
The driverless PHP 8.6 job still fails because unit tests request and require Xdebug-generated coverage, causing subsequent database and live-pipeline checks to be skipped.
1 open issue
What changed in this PR
Extends the Syslog plugin’s integration-test matrix with experimental PHP 8.5 and 8.6 jobs while keeping PHP 8.2–8.4 checks blocking.
Changes:
- Adds non-blocking PHP 8.5 and 8.6 matrix entries.
- Provisions PHP 8.6 through Ondřej Surý’s PPA; other versions retain
setup-php. - Skips the changed-line coverage gate on PHP 8.6 because it lacks a coverage driver.
| File | Description |
|---|---|
.github/workflows/plugin-ci-workflow.yml |
Adds experimental PHP jobs, dedicated 8.6 provisioning, and a conditional coverage gate. |
Review effort: Balanced
PHP 8.6 currently has no code-coverage driver available: Xdebug does not support 8.6 yet and there is no php8.6-xdebug package, so the subprocess in this guard test never writes coverage/clover-guard.xml (it only does so when xdebug_start_code_coverage() exists, as in tests/bin/coverage-prepend.php). Gate the clover-guard.xml existence assertion on the same condition that governs whether the fragment is written. On PHP 8.2-8.5 the setup-php xdebug driver is present, so the assertion runs and enforces the patch-coverage gate exactly as before; on 8.6 it is skipped while every other guard-routing assertion still runs. No production code changes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use the runner effective group alongside the www-data user so newly created RRD files match the existing CI directory ownership. Covers flat and structured RRD paths without changing directory modes or suppressing warnings. Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>
bmfmancini
left a comment
There was a problem hiding this comment.
Reviewed. The workflow change matches the rest of the fleet: non-blocking 8.5/8.6 legs, 8.6 from the Ondřej PPA with the coverage gate skipped there, and the poller run as www-data with the runner group. All checks are green, including both new legs. The test change only skips work that needs xdebug, which the 8.6 leg lacks; the other legs still enforce it.
ubuntu-latest has rolled to Ubuntu 26.04 (Resolute). Ondrej Surys Launchpad PPA (ppa:ondrej/php) has no Release file for the resolute suite yet (it is migrating to packages.sury.org), so apt-get update 404s and the experimental 8.6 PPA toolchain install dies with exit code 100. Pin the experimental 8.6 leg to ubuntu-24.04 (Noble), which still serves the latest packaged 8.6 release candidate from the PPA. The other legs use shivammathur/setup-php and are unaffected. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Move PHP 8.5 from the non-blocking experimental include leg into the required base matrix. 8.5 is a stable release provisioned via shivammathur/setup-php like the other required legs, so it no longer needs continue-on-error. Only PHP 8.6 (still a pre-release installed from Ondrej Surys PPA, pinned to ubuntu-24.04) remains experimental. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|




What
Adds PHP 8.5 as a required leg and PHP 8.6 as a non-blocking (experimental) leg to the plugin integration-test matrix, mirroring the method used in Cacti/cacti#8633.
How
continue-on-error: ${{ matrix.experimental }}to the job andexperimental: [false]to the base matrix.8.5to the required base matrix and keep aninclude:leg for8.6withexperimental: true, so only the bleeding-edge 8.6 toolchain can ever turn CI red.shivammathur/setup-phpas usual.undefined symbol: smart_str_ferealloc/_safe_femalloc), so the 8.6 leg provisions a coherent CLI from Ondrej Sury's PPA instead, keeping the CLI on one ABI-matched build.php8.6-xdebugbuild yet, so the patch-coverage gate (which needs a coverage driver) is skipped on the 8.6 leg only; the 8.5 leg keeps it via setup-php's xdebug.Notes
Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com