Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions .github/nightly_matrix.php → .github/matrix.php
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?php

const BRANCHES = [
['ref' => '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]],
['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 {
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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()]];
: [['name' => 'Suite', '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;
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/nightly-results.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
47 changes: 0 additions & 47 deletions .github/workflows/root.yml

This file was deleted.

File renamed without changes.
27 changes: 22 additions & 5 deletions .github/workflows/push.yml → .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Push
name: Test
on:
push:
paths-ignore: &ignore_paths
Expand All @@ -21,6 +21,8 @@ on:
paths-ignore: *ignore_paths
branches:
- '**'
schedule:
- cron: "0 1 * * *"
workflow_dispatch: ~
permissions:
contents: read
Expand All @@ -33,20 +35,35 @@ 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 }}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this might not work correctly, because 0 is falsy in JavaScript, which I believe backs the expression syntax.

&& "0" || "1" should do the trick.

Possibly it also makes sense to add an extra step setting a “helper” variable, for readability:

    - name: Check nightly
      id: is-nightly
      run: |
        if [ "${{ github.event_name }}" = "schedule" ] || [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
            echo "nightly=1" >> $GITHUB_OUTPUT
        else
            echo "nightly=0" >> $GITHUB_OUTPUT
        fi

And then use ${{ steps.is-nightly.outputs.nightly }} in conditions instead of repeating them.

Copy link
Member Author

@iluuu1994 iluuu1994 Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very good catch. I fixed this in the first way you suggested for now. And I also remembered that "" needs to be '' after I already pushed the fix. ^^

- 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 }}"
run: php .github/matrix.php "${{ github.event_name }}" "${{ github.run_attempt }}" "${{ github.ref }}" '${{ toJSON(github.event.pull_request.labels) }}' "${{ github.repository }}"
PUSH:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be renamed.

needs: GENERATE_MATRIX
name: ${{ matrix.branch.ref }}
uses: ./.github/workflows/nightly.yml
name: ${{ matrix.branch.name }}
uses: ./.github/workflows/test-suite.yml
strategy:
fail-fast: false
matrix:
Expand Down
2 changes: 1 addition & 1 deletion docs/release-process.md
Original file line number Diff line number Diff line change
Expand Up @@ -983,7 +983,7 @@ feature development that cannot go into the new version.
applicable files there to reflect the branch cut, and then upmerge that commit
5 times to get it to `master`. The following files need to be updated:

* `.github/nightly_matrix.php` (add new branch, update version for `master`)
* `.github/matrix.php` (add new branch, update version for `master`)
[Updating after 8.5 branch cut](https://github.com/php/php-src/commit/197921a8aa7b2f9af103b439bf913e23d6ed1b98)

* `.github/scripts/windows/find-target-branch.bat` (update version for `master`)
Expand Down