From a3a76e18b03ed77decc1635e381ac940b0fca9af Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Tue, 4 Feb 2025 17:24:38 +0000 Subject: [PATCH 01/18] Add upgrade testing for the current branch. --- .../workflows/reusable-upgrade-testing.yml | 40 ++++++- .github/workflows/upgrade-develop-testing.yml | 101 ++++++++++++++++++ 2 files changed, 140 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/upgrade-develop-testing.yml diff --git a/.github/workflows/reusable-upgrade-testing.yml b/.github/workflows/reusable-upgrade-testing.yml index 1c617ee91f36f..19f615fed9fe9 100644 --- a/.github/workflows/reusable-upgrade-testing.yml +++ b/.github/workflows/reusable-upgrade-testing.yml @@ -14,7 +14,7 @@ on: required: true type: 'string' new-version: - description: 'The version of WordPress to update to.' + description: 'The version of WordPress to update to. Use "latest" to update to the latest version, or "develop" to update to the current branch.' type: 'string' default: 'latest' php: @@ -99,7 +99,45 @@ jobs: - name: Update to the latest minor version run: wp core update --minor + - name: Download build artifact for the current branch + if: ${{ inputs.new-version == 'develop' }} + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + script: | + const artifacts = await github.rest.actions.listWorkflowRunArtifacts( { + owner: context.repo.owner, + repo: context.repo.repo, + run_id: process.env.RUN_ID, + } ); + + const matchArtifact = artifacts.data.artifacts.filter( ( artifact ) => { + return artifact.name.startsWith( 'wordpress-build-' ); + } )[0]; + + if ( ! matchArtifact ) { + core.setFailed( 'No artifact found!' ); + return; + } + + const download = await github.rest.actions.downloadArtifact( { + owner: context.repo.owner, + repo: context.repo.repo, + artifact_id: matchArtifact.id, + archive_format: 'zip', + } ); + + const fs = require( 'fs' ); + fs.writeFileSync( process.env.GITHUB_WORKSPACE + '/develop.zip', Buffer.from( download.data ) ) + env: + RUN_ID: ${{ github.event.workflow_run.id }} + + - name: Upgrade to WordPress at current branch + if: ${{ inputs.new-version == 'develop' }} + run: | + wp core update develop.zip + - name: Upgrade to WordPress ${{ inputs.new-version }} + if: ${{ inputs.new-version != 'develop' }} run: | wp core update ${{ 'latest' != inputs.new-version && '--version="${WP_VERSION}"' || '' }} env: diff --git a/.github/workflows/upgrade-develop-testing.yml b/.github/workflows/upgrade-develop-testing.yml new file mode 100644 index 0000000000000..0f4fdec703b1a --- /dev/null +++ b/.github/workflows/upgrade-develop-testing.yml @@ -0,0 +1,101 @@ +# Confirms that updating WordPress using WP-CLI works successfully. +# +# This workflow tests upgrading from a previous version to the current wordpress-develop checkout, not to a version available on WordPress.org. +name: Upgrade Develop Version Tests + +on: + workflow_run: + workflows: [ 'Test Build Processes' ] + types: + - completed + +# Cancels all previous workflow runs for pull requests that have not completed. +concurrency: + # The concurrency group contains the workflow name and the branch name for pull requests + # or the commit hash for any other events. + group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }} + cancel-in-progress: true + +# Disable permissions for all available scopes by default. +# Any needed permissions should be configured at the job level. +permissions: {} + +# ... +jobs: + # ... + upgrade-tests-develop: + name: ${{ matrix.wp }} + uses: ./.github/workflows/reusable-upgrade-testing.yml + if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }} + strategy: + fail-fast: false + matrix: + os: [ 'ubuntu-24.04' ] + php: [ '7.2', '8.4' ] + db-type: [ 'mysql' ] + db-version: [ '5.7', '8.4' ] + wp: [ '6.6', '6.7' ] + multisite: [ false, true ] + + exclude: + # The PHP <= 7.3/MySQL 8.4 jobs currently fail due to mysql_native_password being disabled by default. See https://core.trac.wordpress.org/ticket/61218. + - php: '7.2' + db-version: '8.4' + with: + os: ${{ matrix.os }} + php: ${{ matrix.php }} + db-type: ${{ matrix.db-type }} + db-version: ${{ matrix.db-version }} + wp: ${{ matrix.wp }} + new-version: develop + multisite: ${{ matrix.multisite }} + + + slack-notifications: + name: Slack Notifications + uses: ./.github/workflows/slack-notifications.yml + permissions: + actions: read + contents: read + needs: [ upgrade-tests-develop ] + if: ${{ github.repository == 'WordPress/wordpress-develop' && github.event_name != 'pull_request' && always() }} + with: + calling_status: ${{ contains( needs.*.result, 'cancelled' ) && 'cancelled' || contains( needs.*.result, 'failure' ) && 'failure' || 'success' }} + secrets: + SLACK_GHA_SUCCESS_WEBHOOK: ${{ secrets.SLACK_GHA_SUCCESS_WEBHOOK }} + SLACK_GHA_CANCELLED_WEBHOOK: ${{ secrets.SLACK_GHA_CANCELLED_WEBHOOK }} + SLACK_GHA_FIXED_WEBHOOK: ${{ secrets.SLACK_GHA_FIXED_WEBHOOK }} + SLACK_GHA_FAILURE_WEBHOOK: ${{ secrets.SLACK_GHA_FAILURE_WEBHOOK }} + + failed-workflow: + name: Failed workflow tasks + runs-on: ubuntu-24.04 + permissions: + actions: write + needs: [ slack-notifications ] + if: | + always() && + github.repository == 'WordPress/wordpress-develop' && + github.event_name != 'pull_request' && + github.run_attempt < 2 && + ( + contains( needs.*.result, 'cancelled' ) || + contains( needs.*.result, 'failure' ) + ) + + steps: + - name: Dispatch workflow run + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + retries: 2 + retry-exempt-status-codes: 418 + script: | + github.rest.actions.createWorkflowDispatch({ + owner: context.repo.owner, + repo: context.repo.repo, + workflow_id: 'failed-workflow.yml', + ref: 'trunk', + inputs: { + run_id: `${context.runId}`, + } + }); From 583ec179a04be9430225c5372732c511ef3d5198 Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Tue, 4 Feb 2025 17:24:49 +0000 Subject: [PATCH 02/18] Don't run these tests in this PR. --- .github/workflows/upgrade-testing.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/upgrade-testing.yml b/.github/workflows/upgrade-testing.yml index a8b4a9b1c2a46..0691577c6daab 100644 --- a/.github/workflows/upgrade-testing.yml +++ b/.github/workflows/upgrade-testing.yml @@ -10,12 +10,12 @@ on: # Always test the workflow after it's updated. paths: - '.github/workflows/upgrade-testing.yml' - - '.github/workflows/reusable-upgrade-testing.yml' + # - '.github/workflows/reusable-upgrade-testing.yml' pull_request: # Always test the workflow when changes are suggested. paths: - '.github/workflows/upgrade-testing.yml' - - '.github/workflows/reusable-upgrade-testing.yml' + # - '.github/workflows/reusable-upgrade-testing.yml' workflow_dispatch: inputs: new-version: From 51ecaf68cf1b1501dceda87644acf886e2608547 Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Tue, 4 Feb 2025 17:27:44 +0000 Subject: [PATCH 03/18] Argh. --- .github/workflows/upgrade-testing.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/upgrade-testing.yml b/.github/workflows/upgrade-testing.yml index 0691577c6daab..965adc616d424 100644 --- a/.github/workflows/upgrade-testing.yml +++ b/.github/workflows/upgrade-testing.yml @@ -10,12 +10,12 @@ on: # Always test the workflow after it's updated. paths: - '.github/workflows/upgrade-testing.yml' - # - '.github/workflows/reusable-upgrade-testing.yml' - pull_request: - # Always test the workflow when changes are suggested. - paths: - - '.github/workflows/upgrade-testing.yml' - # - '.github/workflows/reusable-upgrade-testing.yml' + - '.github/workflows/reusable-upgrade-testing.yml' + # pull_request: + # # Always test the workflow when changes are suggested. + # paths: + # - '.github/workflows/upgrade-testing.yml' + # - '.github/workflows/reusable-upgrade-testing.yml' workflow_dispatch: inputs: new-version: From 6854186fe6a2c845072d0380713be68f14c2b378 Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Tue, 4 Feb 2025 17:37:22 +0000 Subject: [PATCH 04/18] Trigger a build. --- src/index.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/index.php b/src/index.php index 91c0517857339..2d56e43978b6a 100644 --- a/src/index.php +++ b/src/index.php @@ -1,5 +1,7 @@ Date: Tue, 4 Feb 2025 17:37:40 +0000 Subject: [PATCH 05/18] Don't need any of these running in this PR. --- .github/workflows/coding-standards.yml | 40 ++++++++++----------- .github/workflows/end-to-end-tests.yml | 44 +++++++++++------------ .github/workflows/performance.yml | 46 ++++++++++++------------ .github/workflows/php-compatibility.yml | 30 ++++++++-------- .github/workflows/phpunit-tests.yml | 48 ++++++++++++------------- 5 files changed, 104 insertions(+), 104 deletions(-) diff --git a/.github/workflows/coding-standards.yml b/.github/workflows/coding-standards.yml index 3bb7a60d1d233..88b006b237b06 100644 --- a/.github/workflows/coding-standards.yml +++ b/.github/workflows/coding-standards.yml @@ -12,26 +12,26 @@ on: - '[0-9]+.[0-9]' - '[0-9]+.[0-9].[0-9]+' - '!3.7.[0-9]+' - pull_request: - branches: - - trunk - - '3.[89]' - - '[4-9].[0-9]' - paths: - # Any change to a PHP or JavaScript file should run checks. - - '**.js' - - '**.php' - # These files configure npm. Changes could affect the outcome. - - 'package*.json' - # These files configure Composer. Changes could affect the outcome. - - 'composer.*' - # This file configures JSHint. Changes could affect the outcome. - - '.jshintrc' - # This file configures PHPCS. Changes could affect the outcome. - - 'phpcs.xml.dist' - # Confirm any changes to relevant workflow files. - - '.github/workflows/coding-standards.yml' - - '.github/workflows/reusable-coding-standards-*.yml' + # pull_request: + # branches: + # - trunk + # - '3.[89]' + # - '[4-9].[0-9]' + # paths: + # # Any change to a PHP or JavaScript file should run checks. + # - '**.js' + # - '**.php' + # # These files configure npm. Changes could affect the outcome. + # - 'package*.json' + # # These files configure Composer. Changes could affect the outcome. + # - 'composer.*' + # # This file configures JSHint. Changes could affect the outcome. + # - '.jshintrc' + # # This file configures PHPCS. Changes could affect the outcome. + # - 'phpcs.xml.dist' + # # Confirm any changes to relevant workflow files. + # - '.github/workflows/coding-standards.yml' + # - '.github/workflows/reusable-coding-standards-*.yml' workflow_dispatch: # Cancels all previous workflow runs for pull requests that have not completed. diff --git a/.github/workflows/end-to-end-tests.yml b/.github/workflows/end-to-end-tests.yml index cc8f34810106c..412d11c1318ef 100644 --- a/.github/workflows/end-to-end-tests.yml +++ b/.github/workflows/end-to-end-tests.yml @@ -12,28 +12,28 @@ on: - '[0-9]+.[0-9].[0-9]+' - '![34].[0-9].[0-9]+' - '!5.[0-2].[0-9]+' - pull_request: - branches: - - trunk - - '5.[3-9]' - - '[6-9].[0-9]' - paths: - # Any change to a PHP, CSS, or JavaScript file should run checks. - - '**.css' - - '**.js' - - '**.php' - # These files configure npm and the task runner. Changes could affect the outcome. - - 'package*.json' - - 'Gruntfile.js' - - 'webpack.config.js' - - 'tools/webpack/**' - # These files configure Composer. Changes could affect the outcome. - - 'composer.*' - # This files affect the e2e tests. Changes could affect the outcome. - - 'tests/e2e/**' - # Confirm any changes to relevant workflow files. - - '.github/workflows/end-to-end-tests.yml' - - '.github/workflows/reusable-end-to-end-tests-*.yml' + # pull_request: + # branches: + # - trunk + # - '5.[3-9]' + # - '[6-9].[0-9]' + # paths: + # # Any change to a PHP, CSS, or JavaScript file should run checks. + # - '**.css' + # - '**.js' + # - '**.php' + # # These files configure npm and the task runner. Changes could affect the outcome. + # - 'package*.json' + # - 'Gruntfile.js' + # - 'webpack.config.js' + # - 'tools/webpack/**' + # # These files configure Composer. Changes could affect the outcome. + # - 'composer.*' + # # This files affect the e2e tests. Changes could affect the outcome. + # - 'tests/e2e/**' + # # Confirm any changes to relevant workflow files. + # - '.github/workflows/end-to-end-tests.yml' + # - '.github/workflows/reusable-end-to-end-tests-*.yml' workflow_dispatch: # Cancels all previous workflow runs for pull requests that have not completed. diff --git a/.github/workflows/performance.yml b/.github/workflows/performance.yml index 27339c1eefc41..3d56739265753 100644 --- a/.github/workflows/performance.yml +++ b/.github/workflows/performance.yml @@ -11,29 +11,29 @@ on: - '[0-9]+.[0-9].[0-9]+' - '![45].[0-9].[0-9]+' - '!6.[01].[0-9]+' - pull_request: - branches: - - trunk - - '6.[2-9]' - - '[7-9].[0-9]' - paths: - # Any change to a PHP, CSS, or JavaScript file should run checks. - - '**.css' - - '**.js' - - '**.php' - # These files configure npm and the task runner. Changes could affect the outcome. - - 'package*.json' - - 'Gruntfile.js' - - 'webpack.config.js' - - 'tools/webpack/**' - # These files configure Composer. Changes could affect the outcome. - - 'composer.*' - # This files affect the performance tests. Changes could affect the outcome. - - 'tests/performance/**' - # Confirm any changes to relevant workflow files. - - '.github/workflows/performance.yml' - - '.github/workflows/reusable-performance.yml' - - '.github/workflows/reusable-performance-*.yml' + # pull_request: + # branches: + # - trunk + # - '6.[2-9]' + # - '[7-9].[0-9]' + # paths: + # # Any change to a PHP, CSS, or JavaScript file should run checks. + # - '**.css' + # - '**.js' + # - '**.php' + # # These files configure npm and the task runner. Changes could affect the outcome. + # - 'package*.json' + # - 'Gruntfile.js' + # - 'webpack.config.js' + # - 'tools/webpack/**' + # # These files configure Composer. Changes could affect the outcome. + # - 'composer.*' + # # This files affect the performance tests. Changes could affect the outcome. + # - 'tests/performance/**' + # # Confirm any changes to relevant workflow files. + # - '.github/workflows/performance.yml' + # - '.github/workflows/reusable-performance.yml' + # - '.github/workflows/reusable-performance-*.yml' workflow_dispatch: # Cancels all previous workflow runs for pull requests that have not completed. diff --git a/.github/workflows/php-compatibility.yml b/.github/workflows/php-compatibility.yml index c712e50476dbe..1a8d1406f71a6 100644 --- a/.github/workflows/php-compatibility.yml +++ b/.github/workflows/php-compatibility.yml @@ -12,21 +12,21 @@ on: - '[0-9]+.[0-9].[0-9]+' - '![34].[0-9].[0-9]+' - '!5.[0-4].[0-9]+' - pull_request: - branches: - - trunk - - '5.[5-9]' - - '[6-9].[0-9]' - paths: - # This workflow only scans PHP files. - - '**.php' - # These files configure Composer. Changes could affect the outcome. - - 'composer.*' - # This file configures PHP compatibility scanning. Changes could affect the outcome. - - 'phpcompat.xml.dist' - # Confirm any changes to relevant workflow files. - - '.github/workflows/php-compatibility.yml' - - '.github/workflows/reusable-php-compatibility.yml' + # pull_request: + # branches: + # - trunk + # - '5.[5-9]' + # - '[6-9].[0-9]' + # paths: + # # This workflow only scans PHP files. + # - '**.php' + # # These files configure Composer. Changes could affect the outcome. + # - 'composer.*' + # # This file configures PHP compatibility scanning. Changes could affect the outcome. + # - 'phpcompat.xml.dist' + # # Confirm any changes to relevant workflow files. + # - '.github/workflows/php-compatibility.yml' + # - '.github/workflows/reusable-php-compatibility.yml' workflow_dispatch: # Cancels all previous workflow runs for pull requests that have not completed. diff --git a/.github/workflows/phpunit-tests.yml b/.github/workflows/phpunit-tests.yml index 44c1476980fde..87cd059358459 100644 --- a/.github/workflows/phpunit-tests.yml +++ b/.github/workflows/phpunit-tests.yml @@ -9,30 +9,30 @@ on: tags: - '[0-9]+.[0-9]' - '[0-9]+.[0-9].[0-9]+' - pull_request: - branches: - - trunk - - '3.[7-9]' - - '[4-9].[0-9]' - paths: - # Any change to a PHP, CSS, JavaScript, JSON, HTML, or otherwise tested file should run checks. - - '**.css' - - '**.html' - - '**.js' - - '**.json' - - '**.php' - - 'src/license.txt' - - 'src/SECURITY.md' - # These files configure npm and the task runner. Changes could affect the outcome. - - 'package*.json' - - 'Gruntfile.js' - # These files configure Composer. Changes could affect the outcome. - - 'composer.*' - # This files affect the phpunit tests. Changes could affect the outcome. - - 'tests/phpunit/**' - # Confirm any changes to relevant workflow files. - - '.github/workflows/phpunit-tests.yml' - - '.github/workflows/reusable-phpunit-tests-*.yml' + # pull_request: + # branches: + # - trunk + # - '3.[7-9]' + # - '[4-9].[0-9]' + # paths: + # # Any change to a PHP, CSS, JavaScript, JSON, HTML, or otherwise tested file should run checks. + # - '**.css' + # - '**.html' + # - '**.js' + # - '**.json' + # - '**.php' + # - 'src/license.txt' + # - 'src/SECURITY.md' + # # These files configure npm and the task runner. Changes could affect the outcome. + # - 'package*.json' + # - 'Gruntfile.js' + # # These files configure Composer. Changes could affect the outcome. + # - 'composer.*' + # # This files affect the phpunit tests. Changes could affect the outcome. + # - 'tests/phpunit/**' + # # Confirm any changes to relevant workflow files. + # - '.github/workflows/phpunit-tests.yml' + # - '.github/workflows/reusable-phpunit-tests-*.yml' workflow_dispatch: # Once weekly On Sundays at 00:00 UTC. schedule: From d3954cf6f8cfa3a8ab2966b4ab6d69057cd05840 Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Tue, 4 Feb 2025 18:40:44 +0000 Subject: [PATCH 06/18] Enable manual running of develop performance testing. --- .github/workflows/reusable-upgrade-testing.yml | 7 ++++++- .github/workflows/upgrade-develop-testing.yml | 7 +++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.github/workflows/reusable-upgrade-testing.yml b/.github/workflows/reusable-upgrade-testing.yml index 19f615fed9fe9..a47de3c0d6284 100644 --- a/.github/workflows/reusable-upgrade-testing.yml +++ b/.github/workflows/reusable-upgrade-testing.yml @@ -36,6 +36,11 @@ on: required: false type: 'string' default: '5.7' + run-id: + description: 'The ID of the workflow run to fetch the build from.' + required: false + type: 'number' + default: ${{ github.event.workflow_run.id }} # Disable permissions for all available scopes by default. # Any needed permissions should be configured at the job level. @@ -129,7 +134,7 @@ jobs: const fs = require( 'fs' ); fs.writeFileSync( process.env.GITHUB_WORKSPACE + '/develop.zip', Buffer.from( download.data ) ) env: - RUN_ID: ${{ github.event.workflow_run.id }} + RUN_ID: ${{ inputs.run-id }} - name: Upgrade to WordPress at current branch if: ${{ inputs.new-version == 'develop' }} diff --git a/.github/workflows/upgrade-develop-testing.yml b/.github/workflows/upgrade-develop-testing.yml index 0f4fdec703b1a..2dd20b3879bfc 100644 --- a/.github/workflows/upgrade-develop-testing.yml +++ b/.github/workflows/upgrade-develop-testing.yml @@ -8,6 +8,12 @@ on: workflows: [ 'Test Build Processes' ] types: - completed + workflow_dispatch: + inputs: + run-id: + description: 'The ID of the workflow run to fetch the build from.' + required: true + type: 'number' # Cancels all previous workflow runs for pull requests that have not completed. concurrency: @@ -48,6 +54,7 @@ jobs: db-version: ${{ matrix.db-version }} wp: ${{ matrix.wp }} new-version: develop + run-id: ${{ inputs.run-id || github.event.workflow_run.id }} multisite: ${{ matrix.multisite }} From 7c6136878e08ab306d7dd5e1b81178dace6269a5 Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Tue, 4 Feb 2025 21:00:11 +0000 Subject: [PATCH 07/18] Switch to running the build in the same workflow. --- .../workflows/reusable-upgrade-testing.yml | 35 +-------- .github/workflows/upgrade-develop-testing.yml | 73 ++++++++++++++++--- 2 files changed, 64 insertions(+), 44 deletions(-) diff --git a/.github/workflows/reusable-upgrade-testing.yml b/.github/workflows/reusable-upgrade-testing.yml index a47de3c0d6284..31380f67e3291 100644 --- a/.github/workflows/reusable-upgrade-testing.yml +++ b/.github/workflows/reusable-upgrade-testing.yml @@ -36,11 +36,6 @@ on: required: false type: 'string' default: '5.7' - run-id: - description: 'The ID of the workflow run to fetch the build from.' - required: false - type: 'number' - default: ${{ github.event.workflow_run.id }} # Disable permissions for all available scopes by default. # Any needed permissions should be configured at the job level. @@ -106,35 +101,9 @@ jobs: - name: Download build artifact for the current branch if: ${{ inputs.new-version == 'develop' }} - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 with: - script: | - const artifacts = await github.rest.actions.listWorkflowRunArtifacts( { - owner: context.repo.owner, - repo: context.repo.repo, - run_id: process.env.RUN_ID, - } ); - - const matchArtifact = artifacts.data.artifacts.filter( ( artifact ) => { - return artifact.name.startsWith( 'wordpress-build-' ); - } )[0]; - - if ( ! matchArtifact ) { - core.setFailed( 'No artifact found!' ); - return; - } - - const download = await github.rest.actions.downloadArtifact( { - owner: context.repo.owner, - repo: context.repo.repo, - artifact_id: matchArtifact.id, - archive_format: 'zip', - } ); - - const fs = require( 'fs' ); - fs.writeFileSync( process.env.GITHUB_WORKSPACE + '/develop.zip', Buffer.from( download.data ) ) - env: - RUN_ID: ${{ inputs.run-id }} + name: wordpress-develop - name: Upgrade to WordPress at current branch if: ${{ inputs.new-version == 'develop' }} diff --git a/.github/workflows/upgrade-develop-testing.yml b/.github/workflows/upgrade-develop-testing.yml index 2dd20b3879bfc..758725ada55fc 100644 --- a/.github/workflows/upgrade-develop-testing.yml +++ b/.github/workflows/upgrade-develop-testing.yml @@ -4,16 +4,32 @@ name: Upgrade Develop Version Tests on: - workflow_run: - workflows: [ 'Test Build Processes' ] - types: - - completed + push: + branches: + - trunk + - '6.[8-9]' + - '[7-9].[0-9]' + tags: + - '[0-9]+.[0-9]' + - '[0-9]+.[0-9].[0-9]+' + paths: + # Any change to a source PHP file should run checks. + - 'src/**.php' + # Confirm any changes to relevant workflow files. + - '.github/workflows/upgrade-develop-testing.yml' + - '.github/workflows/reusable-upgrade-testing.yml' + pull_request: + branches: + - trunk + - '6.[8-9]' + - '[7-9].[0-9]' + paths: + # Any change to a source PHP file should run checks. + - 'src/**.php' + # Confirm any changes to relevant workflow files. + - '.github/workflows/upgrade-develop-testing.yml' + - '.github/workflows/reusable-upgrade-testing.yml' workflow_dispatch: - inputs: - run-id: - description: 'The ID of the workflow run to fetch the build from.' - required: true - type: 'number' # Cancels all previous workflow runs for pull requests that have not completed. concurrency: @@ -28,11 +44,48 @@ permissions: {} # ... jobs: + build: + name: Build + permissions: + contents: read + runs-on: ubuntu-24.04 + timeout-minutes: 20 + + steps: + - name: Checkout repository + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + show-progress: ${{ runner.debug == '1' && 'true' || 'false' }} + persist-credentials: false + + - name: Set up Node.js + uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 + with: + node-version-file: '.nvmrc' + cache: npm + + - name: Install npm Dependencies + run: npm ci + + - name: Build WordPress + run: npm run build + + - name: Create ZIP of built files + run: zip -r develop.zip build/. + + - name: Upload ZIP as a GitHub Actions artifact + uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 + with: + name: wordpress-develop + path: develop.zip + if-no-files-found: error + # ... upgrade-tests-develop: name: ${{ matrix.wp }} uses: ./.github/workflows/reusable-upgrade-testing.yml if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }} + needs: [ build ] strategy: fail-fast: false matrix: @@ -54,10 +107,8 @@ jobs: db-version: ${{ matrix.db-version }} wp: ${{ matrix.wp }} new-version: develop - run-id: ${{ inputs.run-id || github.event.workflow_run.id }} multisite: ${{ matrix.multisite }} - slack-notifications: name: Slack Notifications uses: ./.github/workflows/slack-notifications.yml From 6b838ecdf5ec78d4e33af61d49a277cd8a67891b Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Tue, 4 Feb 2025 21:02:28 +0000 Subject: [PATCH 08/18] Don't need this. --- .github/workflows/test-build-processes.yml | 44 +++++++++++----------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/.github/workflows/test-build-processes.yml b/.github/workflows/test-build-processes.yml index 2170bc689b8c3..139aebc073ae8 100644 --- a/.github/workflows/test-build-processes.yml +++ b/.github/workflows/test-build-processes.yml @@ -9,28 +9,28 @@ on: tags: - '[0-9]+.[0-9]' - '[0-9]+.[0-9].[0-9]+' - pull_request: - branches: - - trunk - - '3.[7-9]' - - '[4-9].[0-9]' - paths: - # Any change to a PHP, CSS, JavaScript, or JSON file should run checks. - - '**.css' - - '**.js' - - '**.json' - - '**.php' - # These files configure npm and the task runner. Changes could affect the outcome. - - 'package*.json' - - 'Gruntfile.js' - - 'webpack.config.js' - - 'tools/webpack/**' - # These files configure Composer. Changes could affect the outcome. - - 'composer.*' - # Confirm any changes to relevant workflow files. - - '.github/workflows/test-build-processes.yml' - - '.github/workflows/reusable-test-core-build-process.yml' - - '.github/workflows/reusable-test-gutenberg-build-process.yml' + # pull_request: + # branches: + # - trunk + # - '3.[7-9]' + # - '[4-9].[0-9]' + # paths: + # # Any change to a PHP, CSS, JavaScript, or JSON file should run checks. + # - '**.css' + # - '**.js' + # - '**.json' + # - '**.php' + # # These files configure npm and the task runner. Changes could affect the outcome. + # - 'package*.json' + # - 'Gruntfile.js' + # - 'webpack.config.js' + # - 'tools/webpack/**' + # # These files configure Composer. Changes could affect the outcome. + # - 'composer.*' + # # Confirm any changes to relevant workflow files. + # - '.github/workflows/test-build-processes.yml' + # - '.github/workflows/reusable-test-core-build-process.yml' + # - '.github/workflows/reusable-test-gutenberg-build-process.yml' workflow_dispatch: # Cancels all previous workflow runs for pull requests that have not completed. From 6ad708d50e0985051f59f6bb13f86bb571c76d63 Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Tue, 4 Feb 2025 21:09:21 +0000 Subject: [PATCH 09/18] Naming. --- .github/workflows/upgrade-develop-testing.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/upgrade-develop-testing.yml b/.github/workflows/upgrade-develop-testing.yml index 758725ada55fc..0af4002a7508d 100644 --- a/.github/workflows/upgrade-develop-testing.yml +++ b/.github/workflows/upgrade-develop-testing.yml @@ -82,7 +82,7 @@ jobs: # ... upgrade-tests-develop: - name: ${{ matrix.wp }} + name: Upgrade from ${{ matrix.wp }} uses: ./.github/workflows/reusable-upgrade-testing.yml if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }} needs: [ build ] From 493cea472934e6e83bee199f91fb2d9e1da240e5 Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Tue, 4 Feb 2025 21:10:20 +0000 Subject: [PATCH 10/18] Correct the directory structure in the ZIP. --- .github/workflows/upgrade-develop-testing.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/upgrade-develop-testing.yml b/.github/workflows/upgrade-develop-testing.yml index 0af4002a7508d..31d76535f87c0 100644 --- a/.github/workflows/upgrade-develop-testing.yml +++ b/.github/workflows/upgrade-develop-testing.yml @@ -70,8 +70,11 @@ jobs: - name: Build WordPress run: npm run build + - name: Prepare the directory structure for the ZIP + run: mv build wordpress + - name: Create ZIP of built files - run: zip -r develop.zip build/. + run: zip -q -r develop.zip build/. - name: Upload ZIP as a GitHub Actions artifact uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 From f755ce0c17705e6d9f09785313bab95ef72fce86 Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Tue, 4 Feb 2025 21:12:59 +0000 Subject: [PATCH 11/18] Oops. --- .github/workflows/upgrade-develop-testing.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/upgrade-develop-testing.yml b/.github/workflows/upgrade-develop-testing.yml index 31d76535f87c0..b29b5b9be9e38 100644 --- a/.github/workflows/upgrade-develop-testing.yml +++ b/.github/workflows/upgrade-develop-testing.yml @@ -74,7 +74,7 @@ jobs: run: mv build wordpress - name: Create ZIP of built files - run: zip -q -r develop.zip build/. + run: zip -q -r develop.zip wordpress/. - name: Upload ZIP as a GitHub Actions artifact uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 From dcb89dfc24e5d3099e61bf8a7c3cdaa556c05879 Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Tue, 4 Feb 2025 21:20:00 +0000 Subject: [PATCH 12/18] Add some version debugging. --- .github/workflows/reusable-upgrade-testing.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/reusable-upgrade-testing.yml b/.github/workflows/reusable-upgrade-testing.yml index 31380f67e3291..7ad67a2378002 100644 --- a/.github/workflows/reusable-upgrade-testing.yml +++ b/.github/workflows/reusable-upgrade-testing.yml @@ -96,9 +96,15 @@ jobs: --url=http://localhost/ --title="Upgrade Test" --admin_user=admin \ --admin_password=password --admin_email=me@example.org --skip-email + - name: Pre-upgrade version check + run: wp core version + - name: Update to the latest minor version run: wp core update --minor + - name: Post-upgrade version check after the minor update + run: wp core version + - name: Download build artifact for the current branch if: ${{ inputs.new-version == 'develop' }} uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 @@ -116,3 +122,6 @@ jobs: wp core update ${{ 'latest' != inputs.new-version && '--version="${WP_VERSION}"' || '' }} env: WP_VERSION: ${{ inputs.new-version }} + + - name: Post-upgrade version check + run: wp core version From 76a0eac8a992498de7a1b82fa01c17e7389d2215 Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Tue, 4 Feb 2025 21:20:26 +0000 Subject: [PATCH 13/18] Expand this a little. --- .github/workflows/upgrade-develop-testing.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/upgrade-develop-testing.yml b/.github/workflows/upgrade-develop-testing.yml index b29b5b9be9e38..40da7ec72643f 100644 --- a/.github/workflows/upgrade-develop-testing.yml +++ b/.github/workflows/upgrade-develop-testing.yml @@ -96,7 +96,7 @@ jobs: php: [ '7.2', '8.4' ] db-type: [ 'mysql' ] db-version: [ '5.7', '8.4' ] - wp: [ '6.6', '6.7' ] + wp: [ '6.5', '6.6', '6.7' ] multisite: [ false, true ] exclude: From 14ba1a71bb722551f087a1a42c374e82fc214984 Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Tue, 4 Feb 2025 21:23:55 +0000 Subject: [PATCH 14/18] Add database upgrades. --- .github/workflows/reusable-upgrade-testing.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/reusable-upgrade-testing.yml b/.github/workflows/reusable-upgrade-testing.yml index 7ad67a2378002..4320b4d7ed956 100644 --- a/.github/workflows/reusable-upgrade-testing.yml +++ b/.github/workflows/reusable-upgrade-testing.yml @@ -102,6 +102,9 @@ jobs: - name: Update to the latest minor version run: wp core update --minor + - name: Update the database after the minor update + run: wp core update-db + - name: Post-upgrade version check after the minor update run: wp core version @@ -123,5 +126,8 @@ jobs: env: WP_VERSION: ${{ inputs.new-version }} + - name: Update the database + run: wp core update-db + - name: Post-upgrade version check run: wp core version From 7987943e9fba7058820deb9e132316b6fe4b38b0 Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Tue, 4 Feb 2025 21:37:15 +0000 Subject: [PATCH 15/18] Do a network database upgrade on Multisite. --- .github/workflows/reusable-upgrade-testing.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reusable-upgrade-testing.yml b/.github/workflows/reusable-upgrade-testing.yml index 4320b4d7ed956..4a41c6a974ce5 100644 --- a/.github/workflows/reusable-upgrade-testing.yml +++ b/.github/workflows/reusable-upgrade-testing.yml @@ -103,7 +103,7 @@ jobs: run: wp core update --minor - name: Update the database after the minor update - run: wp core update-db + run: wp core update-db ${{ inputs.multisite && '--network' || '' }} - name: Post-upgrade version check after the minor update run: wp core version @@ -127,7 +127,7 @@ jobs: WP_VERSION: ${{ inputs.new-version }} - name: Update the database - run: wp core update-db + run: wp core update-db ${{ inputs.multisite && '--network' || '' }} - name: Post-upgrade version check run: wp core version From f876e1a2f28bb5dff4f85efb952b8b637bba9969 Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Tue, 4 Feb 2025 21:38:43 +0000 Subject: [PATCH 16/18] Docs. --- .github/workflows/upgrade-develop-testing.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/upgrade-develop-testing.yml b/.github/workflows/upgrade-develop-testing.yml index 40da7ec72643f..45a1ffc6ffa70 100644 --- a/.github/workflows/upgrade-develop-testing.yml +++ b/.github/workflows/upgrade-develop-testing.yml @@ -42,7 +42,7 @@ concurrency: # Any needed permissions should be configured at the job level. permissions: {} -# ... +# Build WordPress from the current branch ready for the upgrade tests. jobs: build: name: Build @@ -83,7 +83,7 @@ jobs: path: develop.zip if-no-files-found: error - # ... + # Run upgrade tests for the current branch. upgrade-tests-develop: name: Upgrade from ${{ matrix.wp }} uses: ./.github/workflows/reusable-upgrade-testing.yml From 929d5493bf0eb07503bb25ad6ed7d9c91f2f301d Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Mon, 10 Feb 2025 11:33:45 +0100 Subject: [PATCH 17/18] Docs. --- .github/workflows/reusable-upgrade-testing.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/reusable-upgrade-testing.yml b/.github/workflows/reusable-upgrade-testing.yml index 4a41c6a974ce5..7b9f542041165 100644 --- a/.github/workflows/reusable-upgrade-testing.yml +++ b/.github/workflows/reusable-upgrade-testing.yml @@ -14,7 +14,7 @@ on: required: true type: 'string' new-version: - description: 'The version of WordPress to update to. Use "latest" to update to the latest version, or "develop" to update to the current branch.' + description: 'The version of WordPress to update to. Use "latest" to update to the latest version, "develop" to update to the current branch, or provide a specific version number to update to.' type: 'string' default: 'latest' php: @@ -49,8 +49,13 @@ jobs: # - Downloads the specified version of WordPress. # - Creates a `wp-config.php` file. # - Installs WordPress. + # - Checks the version of WordPress before the upgrade. # - Updates to the latest minor version. + # - Updates the database after the minor update. + # - Checks the version of WordPress after the minor update. # - Updates to the version of WordPress being tested. + # - Updates the database. + # - Checks the version of WordPress after the upgrade. upgrade-tests: name: ${{ inputs.wp }} to ${{ inputs.new-version }} / PHP ${{ inputs.php }} with ${{ 'mariadb' == inputs.db-type && 'MariaDB' || 'MySQL' }} ${{ inputs.db-version }}${{ inputs.multisite && ' multisite' || '' }} permissions: {} From 2c99c4622ea1fac8518abee1e6e0a752c44aa6d2 Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Mon, 10 Feb 2025 11:56:23 +0100 Subject: [PATCH 18/18] Split the build into a reusable workflow. --- .github/workflows/reusable-build-package.yml | 60 +++++++++++++++++++ .github/workflows/upgrade-develop-testing.yml | 37 +----------- 2 files changed, 62 insertions(+), 35 deletions(-) create mode 100644 .github/workflows/reusable-build-package.yml diff --git a/.github/workflows/reusable-build-package.yml b/.github/workflows/reusable-build-package.yml new file mode 100644 index 0000000000000..f7c744af7c34a --- /dev/null +++ b/.github/workflows/reusable-build-package.yml @@ -0,0 +1,60 @@ +## +# A reusable workflow that builds and packages WordPress. The resulting package can be used to test upgrading and installing. +## +name: Build and package WordPress + +on: + workflow_call: + +# Disable permissions for all available scopes by default. +# Any needed permissions should be configured at the job level. +permissions: {} + +jobs: + # Builds and packages WordPress. + # + # Performs the following steps: + # - Checks out the repository. + # - Sets up Node.js. + # - Runs the build script. + # - Prepares the directory structure for the ZIP. + # - Creates a ZIP of the built files. + # - Uploads the ZIP as a GitHub Actions artifact. + build: + name: WordPress + permissions: + contents: read + runs-on: ubuntu-24.04 + timeout-minutes: 20 + + steps: + - name: Checkout repository + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + show-progress: ${{ runner.debug == '1' && 'true' || 'false' }} + persist-credentials: false + + - name: Set up Node.js + uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 + with: + node-version-file: '.nvmrc' + cache: npm + + - name: Install npm Dependencies + run: npm ci + + - name: Build WordPress + run: npm run build + + - name: Prepare the directory structure for the ZIP + run: mv build wordpress + + - name: Create ZIP of built files + run: zip -q -r develop.zip wordpress/. + + - name: Upload ZIP as a GitHub Actions artifact + uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 + with: + name: wordpress-develop + path: develop.zip + if-no-files-found: error diff --git a/.github/workflows/upgrade-develop-testing.yml b/.github/workflows/upgrade-develop-testing.yml index 45a1ffc6ffa70..edb57bc8d6e88 100644 --- a/.github/workflows/upgrade-develop-testing.yml +++ b/.github/workflows/upgrade-develop-testing.yml @@ -42,46 +42,13 @@ concurrency: # Any needed permissions should be configured at the job level. permissions: {} -# Build WordPress from the current branch ready for the upgrade tests. jobs: + # Build WordPress from the current branch ready for the upgrade tests. build: name: Build + uses: ./.github/workflows/reusable-build-package.yml permissions: contents: read - runs-on: ubuntu-24.04 - timeout-minutes: 20 - - steps: - - name: Checkout repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - with: - show-progress: ${{ runner.debug == '1' && 'true' || 'false' }} - persist-credentials: false - - - name: Set up Node.js - uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 - with: - node-version-file: '.nvmrc' - cache: npm - - - name: Install npm Dependencies - run: npm ci - - - name: Build WordPress - run: npm run build - - - name: Prepare the directory structure for the ZIP - run: mv build wordpress - - - name: Create ZIP of built files - run: zip -q -r develop.zip wordpress/. - - - name: Upload ZIP as a GitHub Actions artifact - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 - with: - name: wordpress-develop - path: develop.zip - if-no-files-found: error # Run upgrade tests for the current branch. upgrade-tests-develop: