1+ # Confirms that updating WordPress using WP-CLI works successfully.
2+ #
3+ # This workflow is not meant to test wordpress-develop checkouts, but rather tagged versions officially available on WordPress.org.
14name : Upgrade Tests
25
36on :
@@ -31,9 +34,28 @@ concurrency:
3134# Any needed permissions should be configured at the job level.
3235permissions : {}
3336
37+ # Because the number of jobs spawned can quickly balloon out of control, the following methodology is applied when
38+ # building out the matrix below:
39+ #
40+ # - The last two releases of WordPress are tested against all PHP/MySQL LTS version combinations and the most recent
41+ # innovation release.
42+ # - The next 6 oldest versions of WordPress are tested against both the oldest and newest releases of PHP currently
43+ # supported for both PHP 7 & 8 along with the oldest and newest MySQL LTS versions currently supported (no innovation
44+ # releases). At the current 3 releases per year pace, this accounts for 2 additional years worth of releases.
45+ # - Of the remaining versions of WordPress still receiving security updates, only test the ones where the database
46+ # version was updated since the previous major release.
47+ # - The oldest version of WordPress receiving security updates should always be tested against the same combinations as
48+ # detailed for the last two releases.
49+
50+ # Notes about chosen MySQL versions:
51+ # - Only the most recent innovation release should be included in testing.
52+ # - Even though MySQL >= 5.5.5 is currently supported, there are no 5.5.x Docker containers available that work on
53+ # modern architectures.
54+ # - 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:
55+ # - 5.7.x accounts for ~20% of installs, so this is used below instead.
3456jobs :
35- # Spawns upgrade testing from WordPress 6.x versions on PHP 8.x with MySQL .
36- upgrade-tests-wp-6x-php-8x-mysql :
57+ # Tests the full list of PHP/MySQL combinations for the last two versions of WordPress .
58+ upgrade-tests-last-two-releases :
3759 name : ${{ matrix.wp }} to ${{ inputs.new-version && inputs.new-version || 'latest' }}
3860 uses : WordPress/wordpress-develop/.github/workflows/reusable-upgrade-testing.yml@trunk
3961 if : ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
@@ -43,12 +65,22 @@ jobs:
4365 fail-fast : false
4466 matrix :
4567 os : [ 'ubuntu-latest' ]
46- php : [ '8.0', '8.1', '8.2', '8.3', '8.4' ]
68+ php : [ '7.2', '7.3', '7.4', ' 8.0', '8.1', '8.2', '8.3', '8.4' ]
4769 db-type : [ 'mysql' ]
48- db-version : [ '5.7', '8.0', '8.4' ]
49- wp : [ '6.0', '6.1', '6.2', '6.3', '6.4', '6.5', '6. 6', '6.7' ]
70+ db-version : [ '5.7', '8.0', '8.4', '9.1' ]
71+ wp : [ '6.6', '6.7' ]
5072 multisite : [ false, true ]
5173
74+ exclude :
75+ - php : ' 7.2'
76+ db-version : ' 8.4'
77+ - php : ' 7.3'
78+ db-version : ' 8.4'
79+ # MySQL 9.0+ will not work on PHP 7.2 & 7.3
80+ - php : ' 7.2'
81+ db-version : ' 9.1'
82+ - php : ' 7.3'
83+ db-version : ' 9.1'
5284 with :
5385 os : ${{ matrix.os }}
5486 php : ${{ matrix.php }}
5890 new-version : ${{ inputs.new-version && inputs.new-version || 'latest' }}
5991 multisite : ${{ matrix.multisite }}
6092
61- # Spawns upgrade testing from WordPress 6.x versions on PHP 7.x with MySQL .
62- upgrade-tests-wp-6x-php-7x- mysql :
93+ # Tests the remaining 6.x releases on the oldest and newest supported versions of PHP 7 & 8 .
94+ upgrade-tests-wp-6x-mysql :
6395 name : ${{ matrix.wp }} to ${{ inputs.new-version && inputs.new-version || 'latest' }}
6496 uses : WordPress/wordpress-develop/.github/workflows/reusable-upgrade-testing.yml@trunk
6597 if : ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
@@ -69,10 +101,10 @@ jobs:
69101 fail-fast : false
70102 matrix :
71103 os : [ 'ubuntu-latest' ]
72- php : [ '7.2', '7.3 ', '7 .4' ]
104+ php : [ '7.2', '7.4 ', '8.0', '8 .4' ]
73105 db-type : [ 'mysql' ]
74- db-version : [ '5.7', '8.0', '8. 4' ]
75- wp : [ '6.0', '6.1', '6.2', '6.3', '6.4', '6.5', '6.6', '6.7' ]
106+ db-version : [ '5.7', '8.4' ]
107+ wp : [ '6.0', '6.1', '6.2', '6.3', '6.4', '6.5' ]
76108 multisite : [ false, true ]
77109
78110 exclude :
89121 new-version : ${{ inputs.new-version && inputs.new-version || 'latest' }}
90122 multisite : ${{ matrix.multisite }}
91123
92- # Spawns upgrade testing from WordPress 5.x versions on PHP 7.x with MySQL .
124+ # Tests 5.x releases where the WordPress database version changed on the oldest and newest supported versions of PHP 7 .
93125 upgrade-tests-wp-5x-php-7x-mysql :
94126 name : ${{ matrix.wp }} to ${{ inputs.new-version && inputs.new-version || 'latest' }}
95127 uses : WordPress/wordpress-develop/.github/workflows/reusable-upgrade-testing.yml@trunk
@@ -98,10 +130,10 @@ jobs:
98130 fail-fast : false
99131 matrix :
100132 os : [ 'ubuntu-latest' ]
101- php : [ '7.2', '7.3', '7. 4' ]
133+ php : [ '7.2', '7.4' ]
102134 db-type : [ 'mysql' ]
103- db-version : [ '5.7', '8.0', '8. 4' ]
104- wp : [ '5.0', '5.1', '5.2', '5. 3', '5.4', '5.5', '5.6', '5.7', '5.8 ', '5.9' ]
135+ db-version : [ '5.7', '8.4' ]
136+ wp : [ '5.0', '5.1', '5.3', '5.4', '5.5', '5.6', '5.9' ]
105137 multisite : [ false, true ]
106138
107139 exclude :
@@ -118,7 +150,7 @@ jobs:
118150 new-version : ${{ inputs.new-version && inputs.new-version || 'latest' }}
119151 multisite : ${{ matrix.multisite }}
120152
121- # Spawns upgrade testing from WordPress 5.x versions on PHP 8.x with MySQL .
153+ # Tests 5.x releases where the WordPress database version changed on the oldest and newest supported versions of PHP 8 .
122154 #
123155 # WordPress 5.0-5.2 are excluded from PHP 8+ testing because of the following fatal errors:
124156 # - Use of __autoload().
@@ -131,10 +163,10 @@ jobs:
131163 fail-fast : false
132164 matrix :
133165 os : [ 'ubuntu-latest' ]
134- php : [ '8.0', '8.1', '8.2', '8.3', '8. 4' ]
166+ php : [ '8.0', '8.4' ]
135167 db-type : [ 'mysql' ]
136- db-version : [ '5.7', '8.0', '8. 4' ]
137- wp : [ '5.3', '5.4', '5.5', '5.6', '5.7', '5.8', '5. 9' ]
168+ db-version : [ '5.7', '8.4' ]
169+ wp : [ '5.3', '5.4', '5.5', '5.6', '5.9' ]
138170 multisite : [ false, true ]
139171 with :
140172 os : ${{ matrix.os }}
@@ -145,7 +177,9 @@ jobs:
145177 new-version : ${{ inputs.new-version && inputs.new-version || 'latest' }}
146178 multisite : ${{ matrix.multisite }}
147179
148- # Spawns upgrade testing from WordPress 4.x versions on PHP 7.x with MySQL.
180+ # Tests 4.x releases where the WordPress database version changed on the oldest and newest supported versions of PHP 7.
181+ #
182+ # The oldest version of WordPress receiving security updates should always be tested.
149183 upgrade-tests-wp-4x-php-7x-mysql :
150184 name : ${{ matrix.wp }} to ${{ inputs.new-version && inputs.new-version || 'latest' }}
151185 uses : WordPress/wordpress-develop/.github/workflows/reusable-upgrade-testing.yml@trunk
@@ -154,10 +188,10 @@ jobs:
154188 fail-fast : false
155189 matrix :
156190 os : [ 'ubuntu-latest' ]
157- php : [ '7.2', '7.3', '7. 4' ]
191+ php : [ '7.2', '7.4' ]
158192 db-type : [ 'mysql' ]
159- db-version : [ '5.7', '8.0', '8. 4' ]
160- wp : [ '4.1', '4.2', '4.3', '4.4', '4.5', '4.6', '4.7', '4.8', '4.9' ]
193+ db-version : [ '5.7', '8.4' ]
194+ wp : [ '4.1', '4.2', '4.3', '4.4', '4.5', '4.6', '4.7' ]
161195 multisite : [ false, true ]
162196
163197 exclude :
@@ -174,7 +208,9 @@ jobs:
174208 new-version : ${{ inputs.new-version && inputs.new-version || 'latest' }}
175209 multisite : ${{ matrix.multisite }}
176210
177- # Spawns upgrade testing from WordPress 4.x versions on PHP 8.x with MySQL.
211+ # Tests 4.x releases where the WordPress database version changed on the oldest and newest supported versions of PHP 8.
212+ #
213+ # The oldest version of WordPress receiving security updates should always be tested.
178214 #
179215 # WordPress 4.6-4.9 are excluded from PHP 8+ testing because of the following fatal errors:
180216 # - Use of __autoload().
@@ -187,9 +223,9 @@ jobs:
187223 fail-fast : false
188224 matrix :
189225 os : [ 'ubuntu-latest' ]
190- php : [ '8.0', '8.1', '8.2', '8.3', '8. 4' ]
226+ php : [ '8.0', '8.4' ]
191227 db-type : [ 'mysql' ]
192- db-version : [ '5.7', '8.0', '8. 4' ]
228+ db-version : [ '5.7', '8.4' ]
193229 wp : [ '4.1', '4.2', '4.3', '4.4', '4.5' ]
194230 multisite : [ false, true ]
195231 with :
@@ -201,13 +237,48 @@ jobs:
201237 new-version : ${{ inputs.new-version && inputs.new-version || 'latest' }}
202238 multisite : ${{ matrix.multisite }}
203239
240+ # The oldest version of WordPress receiving security updates should always be tested against
241+ # the full list of PHP/MySQL combinations.
242+ upgrade-tests-oldest-wp-mysql :
243+ name : ${{ matrix.wp }} to ${{ inputs.new-version && inputs.new-version || 'latest' }}
244+ uses : WordPress/wordpress-develop/.github/workflows/reusable-upgrade-testing.yml@trunk
245+ if : ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
246+ strategy :
247+ fail-fast : false
248+ matrix :
249+ os : [ 'ubuntu-latest' ]
250+ php : [ '7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3', '8.4' ]
251+ db-type : [ 'mysql' ]
252+ db-version : [ '5.7', '8.0', '8.4', '9.1' ]
253+ wp : [ '4.1' ]
254+ multisite : [ false, true ]
255+
256+ exclude :
257+ - php : ' 7.2'
258+ db-version : ' 8.4'
259+ - php : ' 7.3'
260+ db-version : ' 8.4'
261+ # MySQL 9.0+ will not work on PHP 7.2 & 7.3
262+ - php : ' 7.2'
263+ db-version : ' 9.1'
264+ - php : ' 7.3'
265+ db-version : ' 9.1'
266+ with :
267+ os : ${{ matrix.os }}
268+ php : ${{ matrix.php }}
269+ db-type : ${{ matrix.db-type }}
270+ db-version : ${{ matrix.db-version }}
271+ wp : ${{ matrix.wp }}
272+ new-version : ${{ inputs.new-version && inputs.new-version || 'latest' }}
273+ multisite : ${{ matrix.multisite }}
274+
204275 slack-notifications :
205276 name : Slack Notifications
206277 uses : WordPress/wordpress-develop/.github/workflows/slack-notifications.yml@trunk
207278 permissions :
208279 actions : read
209280 contents : read
210- 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 ]
281+ 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, upgrade-tests-oldest-wp -mysql ]
211282 if : ${{ github.repository == 'WordPress/wordpress-develop' && github.event_name != 'pull_request' && always() }}
212283 with :
213284 calling_status : ${{ contains( needs.*.result, 'cancelled' ) && 'cancelled' || contains( needs.*.result, 'failure' ) && 'failure' || 'success' }}
0 commit comments