mirrored from git://develop.git.wordpress.org/
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Build/Test Tools: Add a workflow that tests the process of upgrading …
…WordPress to a build of the current branch. This complements the existing workflow which tests upgrading to an already released version. Props johnbillion, peterwilsoncc, mukesh27, desrosj, audrasjb, joemcgill. See #62221 git-svn-id: https://develop.svn.wordpress.org/trunk@59815 602fd350-edb4-49c9-b593-d223f7449a82
- Loading branch information
1 parent
ac2eeb9
commit 24a2eac
Showing
3 changed files
with
222 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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, "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: {} | ||
|
@@ -96,11 +101,38 @@ jobs: | |
--url=http://localhost/ --title="Upgrade Test" --admin_user=admin \ | ||
--admin_password=password [email protected] --skip-email | ||
- name: Pre-upgrade version check | ||
run: wp core version | ||
|
||
- 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 ${{ inputs.multisite && '--network' || '' }} | ||
|
||
- 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 | ||
with: | ||
name: wordpress-develop | ||
|
||
- 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: | ||
WP_VERSION: ${{ inputs.new-version }} | ||
|
||
- name: Update the database | ||
run: wp core update-db ${{ inputs.multisite && '--network' || '' }} | ||
|
||
- name: Post-upgrade version check | ||
run: wp core version |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,129 @@ | ||
# 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: | ||
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: | ||
|
||
# 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: | ||
# Build WordPress from the current branch ready for the upgrade tests. | ||
build: | ||
name: Build | ||
uses: ./.github/workflows/reusable-build-package.yml | ||
permissions: | ||
contents: read | ||
|
||
# Run upgrade tests for the current branch. | ||
upgrade-tests-develop: | ||
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 ] | ||
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.5', '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}`, | ||
} | ||
}); |