From 436000755b9d4d1e383352fae8f5bcc35520a111 Mon Sep 17 00:00:00 2001 From: Ilija Tovilo Date: Wed, 18 Feb 2026 15:37:00 +0100 Subject: [PATCH 01/10] Move benchmarking job to nightly Then we can unify root.yml and push.yml. Closes GH-21249 --- .github/nightly_matrix.php | 14 ++++- .github/workflows/nightly.yml | 103 +++++++++++++++++++++++++++++++++ .github/workflows/push.yml | 105 +--------------------------------- .github/workflows/root.yml | 2 +- 4 files changed, 117 insertions(+), 107 deletions(-) diff --git a/.github/nightly_matrix.php b/.github/nightly_matrix.php index acb27a5cfc1b..51dd2e690744 100644 --- a/.github/nightly_matrix.php +++ b/.github/nightly_matrix.php @@ -46,10 +46,11 @@ function get_current_version(): array { return [$major, $minor]; } -function select_jobs($nightly, $labels, $php_version, $ref, $all_variations) { +function select_jobs($repository, $trigger, $nightly, $labels, $php_version, $ref, $all_variations) { $no_jobs = in_array('CI: No jobs', $labels, true); $all_jobs = in_array('CI: All jobs', $labels, true) || $nightly; $test_alpine = in_array('CI: Alpine', $labels, true); + $test_benchmarking = in_array('CI: Benchmarking', $labels, true); $test_community = in_array('CI: Community', $labels, true); $test_coverage = in_array('CI: COVERAGE', $labels, true); $test_freebsd = in_array('CI: FreeBSD', $labels, true); @@ -67,6 +68,13 @@ function select_jobs($nightly, $labels, $php_version, $ref, $all_variations) { if (version_compare($php_version, '8.4', '>=') && ($all_jobs || !$no_jobs || $test_alpine)) { $jobs['ALPINE'] = true; } + if (version_compare($php_version, '8.4', '>=') + && !$nightly + && ($all_jobs || !$no_jobs || $test_benchmarking) + // push trigger is restricted to official repository. + && ($repository === 'php/php-src' || $trigger === 'pull_request')) { + $jobs['BENCHMARKING'] = true; + } if ($all_jobs || $test_community) { $jobs['COMMUNITY']['matrix'] = version_compare($php_version, '8.4', '>=') ? ['type' => ['asan', 'verify_type_inference']] @@ -162,9 +170,11 @@ function select_jobs($nightly, $labels, $php_version, $ref, $all_variations) { $nightly = $trigger === 'schedule' || $trigger === 'workflow_dispatch'; $all_variations = $nightly || in_array('CI: All variations', $labels, true); +$repository = $argv[5] ?? null; + foreach ($branches as &$branch) { $php_version = $branch['version'][0] . '.' . $branch['version'][1]; - $branch['jobs'] = select_jobs($nightly, $labels, $php_version, $branch['ref'], $all_variations); + $branch['jobs'] = select_jobs($repository, $trigger, $nightly, $labels, $php_version, $branch['ref'], $all_variations); $branch['config']['ubuntu_version'] = version_compare($php_version, '8.5', '>=') ? '24.04' : '22.04'; } diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 4fffc701f926..6fd84455512a 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -964,3 +964,106 @@ jobs: configurationParameters: >- --${{ matrix.zts && 'enable' || 'disable' }}-zts runExtraTests: true + BENCHMARKING: + name: BENCHMARKING + if: ${{ fromJson(inputs.branch).jobs.BENCHMARKING }} + runs-on: ubuntu-${{ fromJson(inputs.branch).config.ubuntu_version }} + timeout-minutes: 50 + steps: + - name: git checkout + uses: actions/checkout@v6 + with: + fetch-depth: 0 + # ASLR can cause a lot of noise due to missed sse opportunities for memcpy + # and other operations, so we disable it during benchmarking. + - name: Disable ASLR + run: echo 0 | sudo tee /proc/sys/kernel/randomize_va_space + - name: apt + run: | + set -x + sudo apt-get update + sudo apt-get install \ + bison \ + libgmp-dev \ + libonig-dev \ + libsqlite3-dev \ + openssl \ + re2c \ + valgrind + - name: ccache + uses: ./.github/actions/ccache + with: + name: "${{ github.job }}" + - name: ./configure + run: | + set -x + ./buildconf --force + ./configure \ + --disable-debug \ + --enable-mbstring \ + --enable-option-checking=fatal \ + --enable-sockets \ + --enable-werror \ + --prefix=/usr \ + --with-config-file-scan-dir=/etc/php.d \ + --with-gmp \ + --with-mysqli=mysqlnd \ + --with-openssl \ + --with-pdo-sqlite \ + --with-valgrind + - name: make + run: make -j$(/usr/bin/nproc) >/dev/null + - name: make install + run: | + set -x + sudo make install + sudo mkdir -p /etc/php.d + sudo chmod 777 /etc/php.d + echo mysqli.default_socket=/var/run/mysqld/mysqld.sock > /etc/php.d/mysqli.ini + echo opcache.enable=1 >> /etc/php.d/opcache.ini + echo opcache.enable_cli=1 >> /etc/php.d/opcache.ini + - name: Setup + run: | + git config --global user.name "Benchmark" + git config --global user.email "benchmark@php.net" + sudo service mysql start + mysql -uroot -proot -e "CREATE DATABASE IF NOT EXISTS wordpress" + mysql -uroot -proot -e "CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'wordpress'; FLUSH PRIVILEGES;" + mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON *.* TO 'wordpress'@'localhost' WITH GRANT OPTION;" + - name: git checkout benchmarking-data + uses: actions/checkout@v6 + with: + repository: php/benchmarking-data + ssh-key: ${{ secrets.BENCHMARKING_DATA_DEPLOY_KEY }} + path: benchmark/repos/data + - name: Benchmark + run: php benchmark/benchmark.php true + - name: Store result + if: github.event_name == 'push' + run: | + set -x + cd benchmark/repos/data + git pull --autostash + if [ -e ".git/MERGE_HEAD" ]; then + echo "Merging, can't proceed" + exit 1 + fi + git add . + if git diff --cached --quiet; then + exit 0 + fi + git commit -m "Add result for ${{ github.repository }}@${{ github.sha }}" + git push + - name: Show diff + if: github.event_name == 'pull_request' + run: |- + set -x + php benchmark/generate_diff.php \ + ${{ github.sha }} \ + $(git merge-base ${{ github.event.pull_request.base.sha }} ${{ github.sha }}) \ + > $GITHUB_STEP_SUMMARY + - uses: actions/upload-artifact@v6 + with: + name: profiles + path: ${{ github.workspace }}/benchmark/profiles + retention-days: 30 diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 7f2bcf2ca9e5..ccd82c546d9d 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -42,7 +42,7 @@ jobs: - uses: actions/checkout@v6 - name: Generate Matrix id: set-matrix - run: php .github/nightly_matrix.php "${{ github.event_name }}" "${{ github.run_attempt }}" "${{ github.ref }}" '${{ toJSON(github.event.pull_request.labels) }}' + run: php .github/nightly_matrix.php "${{ github.event_name }}" "${{ github.run_attempt }}" "${{ github.ref }}" '${{ toJSON(github.event.pull_request.labels) }}' "${{ github.repository }}" PUSH: needs: GENERATE_MATRIX name: ${{ matrix.branch.ref }} @@ -55,106 +55,3 @@ jobs: all_variations: ${{ needs.GENERATE_MATRIX.outputs.all_variations == 'true' }} branch: ${{ toJSON(matrix.branch) }} secrets: inherit - BENCHMARKING: - name: BENCHMARKING - if: github.repository == 'php/php-src' || github.event_name == 'pull_request' - runs-on: ubuntu-24.04 - timeout-minutes: 50 - steps: - - name: git checkout - uses: actions/checkout@v6 - with: - fetch-depth: 0 - # ASLR can cause a lot of noise due to missed sse opportunities for memcpy - # and other operations, so we disable it during benchmarking. - - name: Disable ASLR - run: echo 0 | sudo tee /proc/sys/kernel/randomize_va_space - - name: apt - run: | - set -x - sudo apt-get update - sudo apt-get install \ - bison \ - libgmp-dev \ - libonig-dev \ - libsqlite3-dev \ - openssl \ - re2c \ - valgrind - - name: ccache - uses: ./.github/actions/ccache - with: - name: "${{ github.job }}" - - name: ./configure - run: | - set -x - ./buildconf --force - ./configure \ - --disable-debug \ - --enable-mbstring \ - --enable-option-checking=fatal \ - --enable-sockets \ - --enable-werror \ - --prefix=/usr \ - --with-config-file-scan-dir=/etc/php.d \ - --with-gmp \ - --with-mysqli=mysqlnd \ - --with-openssl \ - --with-pdo-sqlite \ - --with-valgrind - - name: make - run: make -j$(/usr/bin/nproc) >/dev/null - - name: make install - run: | - set -x - sudo make install - sudo mkdir -p /etc/php.d - sudo chmod 777 /etc/php.d - echo mysqli.default_socket=/var/run/mysqld/mysqld.sock > /etc/php.d/mysqli.ini - echo opcache.enable=1 >> /etc/php.d/opcache.ini - echo opcache.enable_cli=1 >> /etc/php.d/opcache.ini - - name: Setup - run: | - git config --global user.name "Benchmark" - git config --global user.email "benchmark@php.net" - sudo service mysql start - mysql -uroot -proot -e "CREATE DATABASE IF NOT EXISTS wordpress" - mysql -uroot -proot -e "CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'wordpress'; FLUSH PRIVILEGES;" - mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON *.* TO 'wordpress'@'localhost' WITH GRANT OPTION;" - - name: git checkout benchmarking-data - uses: actions/checkout@v6 - with: - repository: php/benchmarking-data - ssh-key: ${{ secrets.BENCHMARKING_DATA_DEPLOY_KEY }} - path: benchmark/repos/data - - name: Benchmark - run: php benchmark/benchmark.php true - - name: Store result - if: github.event_name == 'push' - run: | - set -x - cd benchmark/repos/data - git pull --autostash - if [ -e ".git/MERGE_HEAD" ]; then - echo "Merging, can't proceed" - exit 1 - fi - git add . - if git diff --cached --quiet; then - exit 0 - fi - git commit -m "Add result for ${{ github.repository }}@${{ github.sha }}" - git push - - name: Show diff - if: github.event_name == 'pull_request' - run: |- - set -x - php benchmark/generate_diff.php \ - ${{ github.sha }} \ - $(git merge-base ${{ github.event.pull_request.base.sha }} ${{ github.sha }}) \ - > $GITHUB_STEP_SUMMARY - - uses: actions/upload-artifact@v6 - with: - name: profiles - path: ${{ github.workspace }}/benchmark/profiles - retention-days: 30 diff --git a/.github/workflows/root.yml b/.github/workflows/root.yml index 9a47d5ceec4b..5b3ebfd11d5a 100644 --- a/.github/workflows/root.yml +++ b/.github/workflows/root.yml @@ -31,7 +31,7 @@ jobs: nightly- - name: Generate Matrix id: set-matrix - run: php .github/nightly_matrix.php "${{ github.event_name }}" "${{ github.run_attempt }}" "${{ github.head_ref || github.ref_name }}" '[]' + run: php .github/nightly_matrix.php "${{ github.event_name }}" "${{ github.run_attempt }}" "${{ github.head_ref || github.ref_name }}" '[]' "${{ github.repository }}" NIGHTLY: needs: GENERATE_MATRIX name: ${{ matrix.branch.ref }} From 9c8780dad071ccc5a60c16ae2f3afe23210cb2d4 Mon Sep 17 00:00:00 2001 From: Ilija Tovilo Date: Wed, 18 Feb 2026 16:53:16 +0100 Subject: [PATCH 02/10] [skip ci] Add missing benchmarking checkout ref --- .github/workflows/nightly.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 6fd84455512a..97d28253f546 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -973,6 +973,7 @@ jobs: - name: git checkout uses: actions/checkout@v6 with: + ref: ${{ fromJson(inputs.branch).ref }} fetch-depth: 0 # ASLR can cause a lot of noise due to missed sse opportunities for memcpy # and other operations, so we disable it during benchmarking. From 73b15c5a2f26f674a8188435d1b7a8b1e9385eda Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Wed, 18 Feb 2026 17:01:30 +0100 Subject: [PATCH 03/10] ext/sqlite3: Remove redundant test (#21199) Testing for numRows is redundant as this method isn't implemented. It was probably meant once to be implemented at some point in the future when migrating from ext/sqlite to ext/sqlite3. --- ext/sqlite3/tests/sqlite3_11_numrows.phpt | 48 ----------------------- 1 file changed, 48 deletions(-) delete mode 100644 ext/sqlite3/tests/sqlite3_11_numrows.phpt diff --git a/ext/sqlite3/tests/sqlite3_11_numrows.phpt b/ext/sqlite3/tests/sqlite3_11_numrows.phpt deleted file mode 100644 index 29faea68f8eb..000000000000 --- a/ext/sqlite3/tests/sqlite3_11_numrows.phpt +++ /dev/null @@ -1,48 +0,0 @@ ---TEST-- -SQLite3::prepare number of rows ---EXTENSIONS-- -sqlite3 ---SKIPIF-- - ---FILE-- -exec('CREATE TABLE test (time INTEGER, id STRING)')); - -echo "INSERT into table\n"; -var_dump($db->exec("INSERT INTO test (time, id) VALUES (" . TIMENOW . ", 'a')")); -var_dump($db->exec("INSERT INTO test (time, id) VALUES (" . TIMENOW . ", 'b')")); - -echo "SELECTING results\n"; -$results = $db->query("SELECT * FROM test ORDER BY id ASC"); -echo "Number of rows\n"; -var_dump($results->numRows()); -$results->finalize(); - -echo "Closing database\n"; -var_dump($db->close()); -echo "Done\n"; -?> ---EXPECT-- -Creating Table -bool(true) -INSERT into table -bool(true) -bool(true) -SELECTING results -Number of rows -int(2) -Closing database -bool(true) -Done From bcbc9c2f0027cdbf29c1a8575adb37cf80e51572 Mon Sep 17 00:00:00 2001 From: Ilija Tovilo Date: Wed, 18 Feb 2026 17:29:20 +0100 Subject: [PATCH 04/10] Rename nightly.yml to test-suite.yml --- .github/workflows/push.yml | 2 +- .github/workflows/root.yml | 2 +- .github/workflows/{nightly.yml => test-suite.yml} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename .github/workflows/{nightly.yml => test-suite.yml} (100%) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index ccd82c546d9d..52f7570385dc 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -46,7 +46,7 @@ jobs: PUSH: needs: GENERATE_MATRIX name: ${{ matrix.branch.ref }} - uses: ./.github/workflows/nightly.yml + uses: ./.github/workflows/test-suite.yml strategy: fail-fast: false matrix: diff --git a/.github/workflows/root.yml b/.github/workflows/root.yml index 5b3ebfd11d5a..2b513a76dce3 100644 --- a/.github/workflows/root.yml +++ b/.github/workflows/root.yml @@ -36,7 +36,7 @@ jobs: needs: GENERATE_MATRIX name: ${{ matrix.branch.ref }} if: ${{ needs.GENERATE_MATRIX.outputs.branches != '[]' }} - uses: ./.github/workflows/nightly.yml + uses: ./.github/workflows/test-suite.yml strategy: fail-fast: false matrix: diff --git a/.github/workflows/nightly.yml b/.github/workflows/test-suite.yml similarity index 100% rename from .github/workflows/nightly.yml rename to .github/workflows/test-suite.yml From dca6e5efd31543905499a629741811a814419de6 Mon Sep 17 00:00:00 2001 From: Ilija Tovilo Date: Wed, 18 Feb 2026 17:29:45 +0100 Subject: [PATCH 05/10] Rename push.yml to test.yml --- .github/workflows/{push.yml => test.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{push.yml => test.yml} (100%) diff --git a/.github/workflows/push.yml b/.github/workflows/test.yml similarity index 100% rename from .github/workflows/push.yml rename to .github/workflows/test.yml From 12148a5b494184820b26c7f142d1162e88057274 Mon Sep 17 00:00:00 2001 From: Ilija Tovilo Date: Wed, 18 Feb 2026 17:48:53 +0100 Subject: [PATCH 06/10] Combine push.yml and root.yml into test.yml --- .github/nightly_matrix.php | 20 ++++++++-------- .github/workflows/root.yml | 47 -------------------------------------- .github/workflows/test.yml | 21 +++++++++++++++-- 3 files changed, 29 insertions(+), 59 deletions(-) delete mode 100644 .github/workflows/root.yml diff --git a/.github/nightly_matrix.php b/.github/nightly_matrix.php index 51dd2e690744..39472fda3e72 100644 --- a/.github/nightly_matrix.php +++ b/.github/nightly_matrix.php @@ -1,11 +1,11 @@ 'master', 'version' => [8, 6]], - ['ref' => 'PHP-8.5', 'version' => [8, 5]], - ['ref' => 'PHP-8.4', 'version' => [8, 4]], - ['ref' => 'PHP-8.3', 'version' => [8, 3]], - ['ref' => 'PHP-8.2', 'version' => [8, 2]], + ['ref' => 'refs/heads/master', 'version' => [8, 6]], + ['ref' => 'refs/heads/PHP-8.5', 'version' => [8, 5]], + ['ref' => 'refs/heads/PHP-8.4', 'version' => [8, 4]], + ['ref' => 'refs/heads/PHP-8.3', 'version' => [8, 3]], + ['ref' => 'refs/heads/PHP-8.2', 'version' => [8, 2]], ]; function get_branch_commit_cache_file_path(): string { @@ -81,7 +81,7 @@ function select_jobs($repository, $trigger, $nightly, $labels, $php_version, $re : ['type' => ['asan']]; $jobs['COMMUNITY']['config']['symfony_version'] = version_compare($php_version, '8.4', '>=') ? '8.1' : '7.4'; } - if (($all_jobs && $ref === 'master') || $test_coverage) { + if (($all_jobs && $ref === 'refs/heads/master') || $test_coverage) { $jobs['COVERAGE'] = true; } if ($all_jobs || $test_libmysqlclient) { @@ -129,7 +129,7 @@ function select_jobs($repository, $trigger, $nightly, $labels, $php_version, $re if ($all_jobs || $test_opcache_variation) { $jobs['OPCACHE_VARIATION'] = true; } - if (($all_jobs && $ref === 'master') || $test_pecl) { + if (($all_jobs && $ref === 'refs/heads/master') || $test_pecl) { $jobs['PECL'] = true; } if ($all_jobs || !$no_jobs || $test_windows) { @@ -160,14 +160,14 @@ function select_jobs($repository, $trigger, $nightly, $labels, $php_version, $re if ($discard_cache) { @unlink(get_branch_commit_cache_file_path()); } -$branch = $argv[3] ?? 'master'; -$branches = $branch === 'master' +$branch = $argv[3] ?? 'refs/heads/master'; +$nightly = $trigger === 'schedule' || $trigger === 'workflow_dispatch'; +$branches = $nightly && $branch === 'refs/heads/master' ? get_branches() : [['ref' => $branch, 'version' => get_current_version()]]; $labels = json_decode($argv[4] ?? '[]', true) ?? []; $labels = array_column($labels, 'name'); -$nightly = $trigger === 'schedule' || $trigger === 'workflow_dispatch'; $all_variations = $nightly || in_array('CI: All variations', $labels, true); $repository = $argv[5] ?? null; diff --git a/.github/workflows/root.yml b/.github/workflows/root.yml deleted file mode 100644 index 2b513a76dce3..000000000000 --- a/.github/workflows/root.yml +++ /dev/null @@ -1,47 +0,0 @@ -name: Nightly -on: - schedule: - - cron: "0 1 * * *" - workflow_dispatch: ~ -permissions: - contents: read -jobs: - GENERATE_MATRIX: - name: Generate Matrix - if: github.repository == 'php/php-src' || github.event_name == 'workflow_dispatch' - runs-on: ubuntu-latest - outputs: - all_variations: ${{ steps.set-matrix.outputs.all_variations }} - branches: ${{ steps.set-matrix.outputs.branches }} - steps: - - uses: actions/checkout@v6 - with: - # Set fetch-depth to 0 to clone the full repository - # including all branches. This is required to find - # the correct commit hashes. - fetch-depth: 0 - - name: Grab the commit mapping - uses: actions/cache@v5 - with: - path: branch-commit-cache.json - # The cache key needs to change every time for the - # cache to be updated after this job finishes. - key: nightly-${{ github.run_id }}-${{ github.run_attempt }} - restore-keys: | - nightly- - - name: Generate Matrix - id: set-matrix - run: php .github/nightly_matrix.php "${{ github.event_name }}" "${{ github.run_attempt }}" "${{ github.head_ref || github.ref_name }}" '[]' "${{ github.repository }}" - NIGHTLY: - needs: GENERATE_MATRIX - name: ${{ matrix.branch.ref }} - if: ${{ needs.GENERATE_MATRIX.outputs.branches != '[]' }} - uses: ./.github/workflows/test-suite.yml - strategy: - fail-fast: false - matrix: - branch: ${{ fromJson(needs.GENERATE_MATRIX.outputs.branches) }} - with: - all_variations: ${{ needs.GENERATE_MATRIX.outputs.all_variations == 'true' }} - branch: ${{ toJSON(matrix.branch) }} - secrets: inherit diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 52f7570385dc..96fbd51fb531 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,4 +1,4 @@ -name: Push +name: Test on: push: paths-ignore: &ignore_paths @@ -21,6 +21,8 @@ on: paths-ignore: *ignore_paths branches: - '**' + schedule: + - cron: "0 1 * * *" workflow_dispatch: ~ permissions: contents: read @@ -33,13 +35,28 @@ env: jobs: GENERATE_MATRIX: name: Generate Matrix - if: github.repository == 'php/php-src' || github.event_name == 'pull_request' + if: github.repository == 'php/php-src' || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' runs-on: ubuntu-latest outputs: all_variations: ${{ steps.set-matrix.outputs.all_variations }} branches: ${{ steps.set-matrix.outputs.branches }} steps: - uses: actions/checkout@v6 + with: + # When running nightly, set fetch-depth to 0 to clone the full + # repository including all branches. This is required to find the + # correct commit hashes. + fetch-depth: ${{ (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') && 0 || 1 }} + - name: Grab the commit mapping + if: ${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }} + uses: actions/cache@v5 + with: + path: branch-commit-cache.json + # The cache key needs to change every time for the + # cache to be updated after this job finishes. + key: nightly-${{ github.run_id }}-${{ github.run_attempt }} + restore-keys: | + nightly- - name: Generate Matrix id: set-matrix run: php .github/nightly_matrix.php "${{ github.event_name }}" "${{ github.run_attempt }}" "${{ github.ref }}" '${{ toJSON(github.event.pull_request.labels) }}' "${{ github.repository }}" From cbb3ff0a5bf916528b1579ad1203b6670449fe02 Mon Sep 17 00:00:00 2001 From: Ilija Tovilo Date: Wed, 18 Feb 2026 18:12:32 +0100 Subject: [PATCH 07/10] Improve displayed workflow_call name The ref is very long and makes things unreadable. --- .github/nightly_matrix.php | 12 ++++++------ .github/workflows/test.yml | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/nightly_matrix.php b/.github/nightly_matrix.php index 39472fda3e72..161c2241a963 100644 --- a/.github/nightly_matrix.php +++ b/.github/nightly_matrix.php @@ -1,11 +1,11 @@ 'refs/heads/master', 'version' => [8, 6]], - ['ref' => 'refs/heads/PHP-8.5', 'version' => [8, 5]], - ['ref' => 'refs/heads/PHP-8.4', 'version' => [8, 4]], - ['ref' => 'refs/heads/PHP-8.3', 'version' => [8, 3]], - ['ref' => 'refs/heads/PHP-8.2', 'version' => [8, 2]], + ['name' => 'master', 'ref' => 'refs/heads/master', 'version' => [8, 6]], + ['name' => 'PHP-8.5', 'ref' => 'refs/heads/PHP-8.5', 'version' => [8, 5]], + ['name' => 'PHP-8.4', 'ref' => 'refs/heads/PHP-8.4', 'version' => [8, 4]], + ['name' => 'PHP-8.3', 'ref' => 'refs/heads/PHP-8.3', 'version' => [8, 3]], + ['name' => 'PHP-8.2', 'ref' => 'refs/heads/PHP-8.2', 'version' => [8, 2]], ]; function get_branch_commit_cache_file_path(): string { @@ -164,7 +164,7 @@ function select_jobs($repository, $trigger, $nightly, $labels, $php_version, $re $nightly = $trigger === 'schedule' || $trigger === 'workflow_dispatch'; $branches = $nightly && $branch === 'refs/heads/master' ? get_branches() - : [['ref' => $branch, 'version' => get_current_version()]]; + : [['name' => 'Suite', 'ref' => $branch, 'version' => get_current_version()]]; $labels = json_decode($argv[4] ?? '[]', true) ?? []; $labels = array_column($labels, 'name'); diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 96fbd51fb531..e37d5407c91f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -62,7 +62,7 @@ jobs: run: php .github/nightly_matrix.php "${{ github.event_name }}" "${{ github.run_attempt }}" "${{ github.ref }}" '${{ toJSON(github.event.pull_request.labels) }}' "${{ github.repository }}" PUSH: needs: GENERATE_MATRIX - name: ${{ matrix.branch.ref }} + name: ${{ matrix.branch.name }} uses: ./.github/workflows/test-suite.yml strategy: fail-fast: false From be96ae607d72c7a0d1441b541e1408d0b1af40c9 Mon Sep 17 00:00:00 2001 From: Ilija Tovilo Date: Wed, 18 Feb 2026 19:25:20 +0100 Subject: [PATCH 08/10] Adjust nightly-results.yml for test.yml --- .github/workflows/nightly-results.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/nightly-results.yml b/.github/workflows/nightly-results.yml index a222582da1c6..fea01e1b0264 100644 --- a/.github/workflows/nightly-results.yml +++ b/.github/workflows/nightly-results.yml @@ -2,13 +2,13 @@ name: Nightly results on: workflow_run: workflows: - - Nightly + - Test types: - completed jobs: on-failure: runs-on: ubuntu-latest - if: ${{ github.repository == 'php/php-src' && github.event.workflow_run.conclusion == 'failure' }} + if: ${{ github.repository == 'php/php-src' && github.event.workflow_run.event == 'schedule' && github.event.workflow_run.conclusion == 'failure' }} steps: - run: | export DEBIAN_FRONTEND=noninteractive From 37528afdaddd092fe3f5c3c57349f4be5128e7cf Mon Sep 17 00:00:00 2001 From: Ilija Tovilo Date: Wed, 18 Feb 2026 19:49:42 +0100 Subject: [PATCH 09/10] Rename nightly_matrix.php to matrix.php --- .github/{nightly_matrix.php => matrix.php} | 0 .github/workflows/test.yml | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename .github/{nightly_matrix.php => matrix.php} (100%) diff --git a/.github/nightly_matrix.php b/.github/matrix.php similarity index 100% rename from .github/nightly_matrix.php rename to .github/matrix.php diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e37d5407c91f..4c99f5809b45 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -59,7 +59,7 @@ jobs: nightly- - name: Generate Matrix id: set-matrix - run: php .github/nightly_matrix.php "${{ github.event_name }}" "${{ github.run_attempt }}" "${{ github.ref }}" '${{ toJSON(github.event.pull_request.labels) }}' "${{ github.repository }}" + run: php .github/matrix.php "${{ github.event_name }}" "${{ github.run_attempt }}" "${{ github.ref }}" '${{ toJSON(github.event.pull_request.labels) }}' "${{ github.repository }}" PUSH: needs: GENERATE_MATRIX name: ${{ matrix.branch.name }} From e22ef207ac4bf2c8a2fdb12f687839f7fb957550 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20D=C3=BCsterhus?= Date: Wed, 18 Feb 2026 20:31:19 +0100 Subject: [PATCH 10/10] [skip ci] Update my own years in EXTENSIONS --- EXTENSIONS | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/EXTENSIONS b/EXTENSIONS index 4f018bfeb2de..2eec7726c12c 100644 --- a/EXTENSIONS +++ b/EXTENSIONS @@ -420,7 +420,7 @@ STATUS: Working ------------------------------------------------------------------------------- EXTENSION: random PRIMARY MAINTAINER Go Kudo (2022 - 2024) - Tim Düsterhus (2022 - 2025) + Tim Düsterhus (2022 - 2026) MAINTENANCE: Maintained STATUS: Working SINCE: 8.2.0 @@ -507,7 +507,7 @@ STATUS: Working ------------------------------------------------------------------------------- EXTENSION: uri PRIMARY MAINTAINER Máté Kocsis (2025 - 2025) - Tim Düsterhus (2025 - 2025) + Tim Düsterhus (2025 - 2026) MAINTENANCE: Maintained STATUS: Working SINCE: 8.5.0