From f806641efa00389e8dd56eb6b0cef4fbdebb91d4 Mon Sep 17 00:00:00 2001 From: TheWitness Date: Sat, 7 Nov 2026 15:47:00 -0500 Subject: [PATCH 1/4] ci: add non-blocking PHP 8.5 and 8.6 matrix legs 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> --- .github/workflows/plugin-ci-workflow.yml | 51 +++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/.github/workflows/plugin-ci-workflow.yml b/.github/workflows/plugin-ci-workflow.yml index da534361..1d1dfe60 100644 --- a/.github/workflows/plugin-ci-workflow.yml +++ b/.github/workflows/plugin-ci-workflow.yml @@ -33,12 +33,23 @@ jobs: integration-test: timeout-minutes: 45 runs-on: ${{ matrix.os }} + continue-on-error: ${{ matrix.experimental }} strategy: fail-fast: false matrix: php: ['8.2', '8.3', '8.4'] os: [ubuntu-latest] + experimental: [false] + include: + # PHP 8.5 and 8.6 run as non-blocking (experimental) legs because + # their packages can lag on the runners and in Ondřej Surý's PPA. + - php: '8.5' + os: ubuntu-latest + experimental: true + - php: '8.6' + os: ubuntu-latest + experimental: true services: mariadb: @@ -76,6 +87,7 @@ jobs: fetch-depth: 0 - name: Install PHP ${{ matrix.php }} + if: matrix.php != '8.6' uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # 2.37.2 with: php-version: ${{ matrix.php }} @@ -84,6 +96,41 @@ jobs: coverage: xdebug ini-values: "post_max_size=256M, max_execution_time=60, date.timezone=America/New_York" + # PHP 8.6 is still pre-release. shivammathur/setup-php ships a nightly + # 8.6.0-dev build whose bundled extensions are ABI-skewed against their own + # core (undefined symbol: smart_str_ferealloc / _safe_femalloc), so every + # extension fails to load and the CLI install dies. Ondřej Surý's PPA + # provides a coherent 8.6 RC build, so this experimental leg provisions the + # CLI from there instead. + - name: Install PHP 8.6 toolchain from Ondřej Surý's PPA + if: matrix.php == '8.6' + run: | + set -euo pipefail + sudo add-apt-repository -y ppa:ondrej/php + sudo apt-get update + sudo apt-get install -y \ + php8.6-cli php8.6-common \ + php8.6-intl php8.6-mysql php8.6-gd php8.6-ldap \ + php8.6-gmp php8.6-xml php8.6-curl php8.6-mbstring \ + php8.6-snmp php8.6-sqlite3 + # Make the Ondřej 8.6 CLI the default `php` so composer and the tests + # run under the same ABI-coherent build. + sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.6 86 + sudo update-alternatives --set php /usr/bin/php8.6 + # Mirror the ini values the other legs receive via setup-php. + printf '%s\n' \ + 'post_max_size=256M' \ + 'max_execution_time=60' \ + 'date.timezone=America/New_York' \ + | sudo tee /etc/php/8.6/cli/conf.d/99-cacti-ci.ini >/dev/null + # setup-php normally provides Composer; it is skipped for this leg, so + # make sure a Composer binary is available for the dependency steps. + if ! command -v composer >/dev/null 2>&1; then + sudo apt-get install -y composer + fi + php -v + composer --version + - name: Check PHP version run: php -v @@ -203,7 +250,9 @@ jobs: # inside a live Cacti. What is enforceable is that a change covers the # lines it adds. - name: Enforce coverage of changed lines - if: github.event_name == 'pull_request' + # PHP 8.6 installs from the Ondřej PPA, which has no matching xdebug + # build yet, so there is no coverage driver on that experimental leg. + if: github.event_name == 'pull_request' && matrix.php != '8.6' env: BASE_REF: ${{ github.event.pull_request.base.sha }} run: | From 20a18a12ea87c32542fd1bbdf65d3e851a5e8fb1 Mon Sep 17 00:00:00 2001 From: Thomas Vincent Date: Sat, 7 Nov 2026 18:55:44 -0800 Subject: [PATCH 2/4] fix(ci): run the poller with the shared RRD group 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 --- .github/workflows/plugin-ci-workflow.yml | 2 +- CHANGELOG.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/plugin-ci-workflow.yml b/.github/workflows/plugin-ci-workflow.yml index 1d1dfe60..90662275 100644 --- a/.github/workflows/plugin-ci-workflow.yml +++ b/.github/workflows/plugin-ci-workflow.yml @@ -309,7 +309,7 @@ jobs: - name: Run Cacti Poller run: | cd ${{ github.workspace }}/cacti - sudo -u www-data php poller.php --poller=1 --force --debug + sudo runuser -u www-data -g runner -- php poller.php --poller=1 --force --debug if ! grep -q "SYSTEM STATS" log/cacti.log; then echo "Cacti poller did not finish successfully" diff --git a/CHANGELOG.md b/CHANGELOG.md index 5cf3ffdc..954159d7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ --- develop --- +* dev: Run the CI poller with the shared runner group so RRD files and structured directories pass permission verification * issue: Remove the Listener and Stream from the report page. They are part of what a Filter materializes, so changing them there ran the report against data that was never materialized. They are now set only in the Filter editor, and the report page reads them straight from the saved Filter. The New button now follows Edit. * issue: Start a materialization automatically when a Filter is saved with a change that affects its cached results, from either the Filter editor or the FlowView tab, and say so, instead of asking the user to start one by hand from the Filters page. From 810e9939b9a370f5d652c5b2b8e82684c9295051 Mon Sep 17 00:00:00 2001 From: TheWitness Date: Sun, 8 Nov 2026 10:15:03 -0500 Subject: [PATCH 3/4] ci: pin PHP 8.6 leg to ubuntu-24.04 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> --- .github/workflows/plugin-ci-workflow.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/plugin-ci-workflow.yml b/.github/workflows/plugin-ci-workflow.yml index 90662275..c34611aa 100644 --- a/.github/workflows/plugin-ci-workflow.yml +++ b/.github/workflows/plugin-ci-workflow.yml @@ -47,8 +47,11 @@ jobs: - php: '8.5' os: ubuntu-latest experimental: true + # Pinned to Ubuntu 24.04 (Noble): ubuntu-latest is now Ubuntu 26.04 + # (Resolute), which Ondrej Sury's PPA does not yet serve, so the 8.6 + # PPA toolchain install 404s. Noble carries the latest packaged 8.6 RC. - php: '8.6' - os: ubuntu-latest + os: ubuntu-24.04 experimental: true services: From c243f993f4b791558b665f03a1977822398bfab0 Mon Sep 17 00:00:00 2001 From: TheWitness Date: Sun, 8 Nov 2026 10:41:57 -0500 Subject: [PATCH 4/4] ci: make PHP 8.5 a required (non-experimental) matrix leg 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> --- .github/workflows/plugin-ci-workflow.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/workflows/plugin-ci-workflow.yml b/.github/workflows/plugin-ci-workflow.yml index c34611aa..756f606d 100644 --- a/.github/workflows/plugin-ci-workflow.yml +++ b/.github/workflows/plugin-ci-workflow.yml @@ -38,15 +38,12 @@ jobs: strategy: fail-fast: false matrix: - php: ['8.2', '8.3', '8.4'] + php: ['8.2', '8.3', '8.4', '8.5'] os: [ubuntu-latest] experimental: [false] include: - # PHP 8.5 and 8.6 run as non-blocking (experimental) legs because - # their packages can lag on the runners and in Ondřej Surý's PPA. - - php: '8.5' - os: ubuntu-latest - experimental: true + # PHP 8.6 runs as a non-blocking (experimental) leg because + # its packages can lag on the runners and in Ondřej Surý's PPA. # Pinned to Ubuntu 24.04 (Noble): ubuntu-latest is now Ubuntu 26.04 # (Resolute), which Ondrej Sury's PPA does not yet serve, so the 8.6 # PPA toolchain install 404s. Noble carries the latest packaged 8.6 RC.