Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Trim down the upgrade testing workflow. #7966

Closed
wants to merge 9 commits into from
Closed
Changes from 6 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
87 changes: 61 additions & 26 deletions .github/workflows/upgrade-testing.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# Confirms that updating WordPress using WP-CLI works successfully.
#
# This workflow is not meant to test wordpress-develop checkouts, but rather tagged versions officially available on WordPress.org.
name: Upgrade Tests

on:
Expand Down Expand Up @@ -31,9 +34,27 @@ concurrency:
# Any needed permissions should be configured at the job level.
permissions: {}

# Because the number of jobs spawned can balloon out of control quickly, the following methodology is applied when
# building ou the matrix below:
desrosj marked this conversation as resolved.
Show resolved Hide resolved
#
# - The last two releases of WordPress are tested against all PHP and MySQL LTS version combinations and the most recent
# innovation release.
# - The next 6 oldest versions of WordPress are tested against both the oldest and newest releases of PHP currently
# supported for both PHP 7 & 8 along with the oldest and newest MySQL LTS versions currently supported (no innovation
# releases).
# - For the remaining versions of WordPress receiving security updates, they are only included if the database version
# was different that the previous major release.
# - The oldest version of WordPress receiving security updates should always be tested.

# Notes about chosen MySQL versions:
# - Only the most recent innovation release should be included in testing.
# - Even though MySQL >= 5.5.5 is currently supported, there are no 5.5.x Docker containers available that work on
# modern architectures.
# - 5.6.x Docker containers are available and work, but 5.6 only accounts for ~2.3% of installs as of 12/6/2024.defaults:
# - 5.7.x accounts for ~20% of installs, so this is used below instead.
jobs:
# Spawns upgrade testing from WordPress 6.x versions on PHP 8.x with MySQL.
upgrade-tests-wp-6x-php-8x-mysql:
# Tests the full list of PHP/MySQL combinations for the last two versions of WordPress.
upgrade-tests-last-two-releases:
name: ${{ matrix.wp }} to ${{ inputs.new-version && inputs.new-version || 'latest' }}
uses: WordPress/wordpress-develop/.github/workflows/reusable-upgrade-testing.yml@trunk
if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
Expand All @@ -43,12 +64,22 @@ jobs:
fail-fast: false
matrix:
os: [ 'ubuntu-latest' ]
php: [ '8.0', '8.1', '8.2', '8.3', '8.4' ]
php: [ '7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3', '8.4' ]
db-type: [ 'mysql' ]
db-version: [ '5.7', '8.0', '8.4' ]
wp: [ '6.0', '6.1', '6.2', '6.3', '6.4', '6.5', '6.6', '6.7' ]
db-version: [ '5.7', '8.0', '8.4', '9.1' ]
wp: [ '6.6', '6.7' ]
multisite: [ false, true ]

exclude:
- php: '7.2'
db-version: '8.4'
- php: '7.3'
db-version: '8.4'
# MySQL 9.0+ will not work on PHP 7.2 & 7.3
- php: '7.2'
db-version: '9.1'
- php: '7.3'
db-version: '9.1'
with:
os: ${{ matrix.os }}
php: ${{ matrix.php }}
Expand All @@ -58,8 +89,8 @@ jobs:
new-version: ${{ inputs.new-version && inputs.new-version || 'latest' }}
multisite: ${{ matrix.multisite }}

# Spawns upgrade testing from WordPress 6.x versions on PHP 7.x with MySQL.
upgrade-tests-wp-6x-php-7x-mysql:
# Tests the remaining 6.x releases on the oldest and newest supported versions of PHP 7 & 8.
upgrade-tests-wp-6x-mysql:
name: ${{ matrix.wp }} to ${{ inputs.new-version && inputs.new-version || 'latest' }}
uses: WordPress/wordpress-develop/.github/workflows/reusable-upgrade-testing.yml@trunk
if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
Expand All @@ -69,10 +100,10 @@ jobs:
fail-fast: false
matrix:
os: [ 'ubuntu-latest' ]
php: [ '7.2', '7.3', '7.4' ]
php: [ '7.2', '7.4', '8.0', '8.4' ]
db-type: [ 'mysql' ]
db-version: [ '5.7', '8.0', '8.4' ]
wp: [ '6.0', '6.1', '6.2', '6.3', '6.4', '6.5', '6.6', '6.7' ]
db-version: [ '5.7', '8.4' ]
wp: [ '6.0', '6.1', '6.2', '6.3', '6.4', '6.5' ]
multisite: [ false, true ]

exclude:
Expand All @@ -89,7 +120,7 @@ jobs:
new-version: ${{ inputs.new-version && inputs.new-version || 'latest' }}
multisite: ${{ matrix.multisite }}

# Spawns upgrade testing from WordPress 5.x versions on PHP 7.x with MySQL.
# Tests 5.x releases where the WordPress database version changed on the oldest and newest supported versions of PHP 7.
upgrade-tests-wp-5x-php-7x-mysql:
name: ${{ matrix.wp }} to ${{ inputs.new-version && inputs.new-version || 'latest' }}
uses: WordPress/wordpress-develop/.github/workflows/reusable-upgrade-testing.yml@trunk
Expand All @@ -98,10 +129,10 @@ jobs:
fail-fast: false
matrix:
os: [ 'ubuntu-latest' ]
php: [ '7.2', '7.3', '7.4' ]
php: [ '7.2', '7.4' ]
db-type: [ 'mysql' ]
db-version: [ '5.7', '8.0', '8.4' ]
wp: [ '5.0', '5.1', '5.2', '5.3', '5.4', '5.5', '5.6', '5.7', '5.8', '5.9' ]
db-version: [ '5.7', '8.4' ]
wp: [ '5.0', '5.1', '5.3', '5.4', '5.5', '5.6', '5.9' ]
multisite: [ false, true ]

exclude:
Expand All @@ -118,7 +149,7 @@ jobs:
new-version: ${{ inputs.new-version && inputs.new-version || 'latest' }}
multisite: ${{ matrix.multisite }}

# Spawns upgrade testing from WordPress 5.x versions on PHP 8.x with MySQL.
# Tests 5.x releases where the WordPress database version changed on the oldest and newest supported versions of PHP 8.
#
# WordPress 5.0-5.2 are excluded from PHP 8+ testing because of the following fatal errors:
# - Use of __autoload().
Expand All @@ -131,10 +162,10 @@ jobs:
fail-fast: false
matrix:
os: [ 'ubuntu-latest' ]
php: [ '8.0', '8.1', '8.2', '8.3', '8.4' ]
php: [ '8.0', '8.4' ]
db-type: [ 'mysql' ]
db-version: [ '5.7', '8.0', '8.4' ]
wp: [ '5.3', '5.4', '5.5', '5.6', '5.7', '5.8', '5.9' ]
db-version: [ '5.7', '8.4' ]
wp: [ '5.3', '5.4', '5.5', '5.6', '5.9' ]
multisite: [ false, true ]
with:
os: ${{ matrix.os }}
Expand All @@ -145,7 +176,9 @@ jobs:
new-version: ${{ inputs.new-version && inputs.new-version || 'latest' }}
multisite: ${{ matrix.multisite }}

# Spawns upgrade testing from WordPress 4.x versions on PHP 7.x with MySQL.
# Tests 4.x releases where the WordPress database version changed on the oldest and newest supported versions of PHP 7.
#
# The oldest version of WordPress receiving security updates should always be tested.
upgrade-tests-wp-4x-php-7x-mysql:
name: ${{ matrix.wp }} to ${{ inputs.new-version && inputs.new-version || 'latest' }}
uses: WordPress/wordpress-develop/.github/workflows/reusable-upgrade-testing.yml@trunk
Expand All @@ -154,10 +187,10 @@ jobs:
fail-fast: false
matrix:
os: [ 'ubuntu-latest' ]
php: [ '7.2', '7.3', '7.4' ]
php: [ '7.2', '7.4' ]
db-type: [ 'mysql' ]
db-version: [ '5.7', '8.0', '8.4' ]
wp: [ '4.1', '4.2', '4.3', '4.4', '4.5', '4.6', '4.7', '4.8', '4.9' ]
db-version: [ '5.7', '8.4' ]
wp: [ '4.1', '4.2', '4.3', '4.4', '4.5', '4.6', '4.7' ]
multisite: [ false, true ]

exclude:
Expand All @@ -174,7 +207,9 @@ jobs:
new-version: ${{ inputs.new-version && inputs.new-version || 'latest' }}
multisite: ${{ matrix.multisite }}

# Spawns upgrade testing from WordPress 4.x versions on PHP 8.x with MySQL.
# Tests 4.x releases where the WordPress database version changed on the oldest and newest supported versions of PHP 8.
#
# The oldest version of WordPress receiving security updates should always be tested.
#
# WordPress 4.6-4.9 are excluded from PHP 8+ testing because of the following fatal errors:
# - Use of __autoload().
Expand All @@ -187,9 +222,9 @@ jobs:
fail-fast: false
matrix:
os: [ 'ubuntu-latest' ]
php: [ '8.0', '8.1', '8.2', '8.3', '8.4' ]
php: [ '8.0', '8.4' ]
db-type: [ 'mysql' ]
db-version: [ '5.7', '8.0', '8.4' ]
db-version: [ '5.7', '8.4' ]
wp: [ '4.1', '4.2', '4.3', '4.4', '4.5' ]
multisite: [ false, true ]
with:
Expand All @@ -207,7 +242,7 @@ jobs:
permissions:
actions: read
contents: read
needs: [ upgrade-tests-wp-6x-php-8x-mysql, upgrade-tests-wp-6x-php-7x-mysql, upgrade-tests-wp-5x-php-7x-mysql, upgrade-tests-wp-5x-php-8x-mysql, upgrade-tests-wp-4x-php-7x-mysql, upgrade-tests-wp-4x-php-8x-mysql ]
needs: [ upgrade-tests-last-two-releases, upgrade-tests-wp-6x-mysql, upgrade-tests-wp-5x-php-7x-mysql, upgrade-tests-wp-5x-php-8x-mysql, upgrade-tests-wp-4x-php-7x-mysql, upgrade-tests-wp-4x-php-8x-mysql ]
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' }}
Expand Down
Loading