<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[60534] trunk/.github/workflows: Build/Test Tools: Spawn fewer jobs in GitHub Actions on forks.</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { white-space: pre-line; overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="https://core.trac.wordpress.org/changeset/60534">60534</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"https://core.trac.wordpress.org/changeset/60534","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>desrosj</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2025-08-01 12:42:18 +0000 (Fri, 01 Aug 2025)</dd>
</dl>
<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>Build/Test Tools: Spawn fewer jobs in GitHub Actions on forks.
The GitHub Actions workflows currently limit when jobs run for forks by short-circuiting any that are triggered by `push` events when not running within the `wordpress-develop` repository.
Because the large majority of forks are not created under organizations, they will be subject to the individual account limit of 20 concurrent jobs (40 for pro accounts) at any given time instead of the 500 concurrent job limit that applies to the WordPress organization. This means that a single pull request back to a fork can take several hours to complete the workflow jobs that are spawned.
This revises the conditional statements to further limit the number of jobs that spawn within a fork while still allowing the full test matrices for forks within the `WordPress` organization and pull requests back to `wordpress-develop`.
These adjustments result in a maximum of 53 jobs when all workflows configured to run within forks are triggered. Of these, ~66% will run in less than 3 minutes, and ~55% will run in less than 1 minute.
Props jorbin, johnbillion.
Fixes <a href="https://core.trac.wordpress.org/ticket/63752">#63752</a>.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkgithubworkflowsinstalltestingyml">trunk/.github/workflows/install-testing.yml</a></li>
<li><a href="#trunkgithubworkflowslocaldockerenvironmentyml">trunk/.github/workflows/local-docker-environment.yml</a></li>
<li><a href="#trunkgithubworkflowsphpunittestsyml">trunk/.github/workflows/phpunit-tests.yml</a></li>
<li><a href="#trunkgithubworkflowstestandzipdefaultthemesyml">trunk/.github/workflows/test-and-zip-default-themes.yml</a></li>
<li><a href="#trunkgithubworkflowstestbuildprocessesyml">trunk/.github/workflows/test-build-processes.yml</a></li>
<li><a href="#trunkgithubworkflowsupgradedeveloptestingyml">trunk/.github/workflows/upgrade-develop-testing.yml</a></li>
<li><a href="#trunkgithubworkflowsupgradetestingyml">trunk/.github/workflows/upgrade-testing.yml</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkgithubworkflowsinstalltestingyml"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/.github/workflows/install-testing.yml</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/.github/workflows/install-testing.yml 2025-08-01 11:27:03 UTC (rev 60533)
+++ trunk/.github/workflows/install-testing.yml 2025-08-01 12:42:18 UTC (rev 60534)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -47,7 +47,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> permissions:
</span><span class="cx" style="display: block; padding: 0 10px"> contents: read
</span><span class="cx" style="display: block; padding: 0 10px"> secrets: inherit
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- if: ${{ github.repository == 'WordPress/wordpress-develop' || ( github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' ) }}
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if: ${{ github.repository == 'WordPress/wordpress-develop' }}
</ins><span class="cx" style="display: block; padding: 0 10px"> with:
</span><span class="cx" style="display: block; padding: 0 10px"> wp-version: ${{ inputs.wp-version }}
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -63,7 +63,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> permissions:
</span><span class="cx" style="display: block; padding: 0 10px"> contents: read
</span><span class="cx" style="display: block; padding: 0 10px"> runs-on: ${{ matrix.os }}
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- if: ${{ github.repository == 'WordPress/wordpress-develop' || ( github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' ) }}
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if: ${{ github.repository == 'WordPress/wordpress-develop' }}
</ins><span class="cx" style="display: block; padding: 0 10px"> timeout-minutes: 10
</span><span class="cx" style="display: block; padding: 0 10px"> needs: [ build-test-matrix ]
</span><span class="cx" style="display: block; padding: 0 10px"> strategy:
</span></span></pre></div>
<a id="trunkgithubworkflowslocaldockerenvironmentyml"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/.github/workflows/local-docker-environment.yml</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/.github/workflows/local-docker-environment.yml 2025-08-01 11:27:03 UTC (rev 60533)
+++ trunk/.github/workflows/local-docker-environment.yml 2025-08-01 12:42:18 UTC (rev 60534)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -73,7 +73,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> permissions:
</span><span class="cx" style="display: block; padding: 0 10px"> contents: read
</span><span class="cx" style="display: block; padding: 0 10px"> secrets: inherit
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- if: ${{ github.repository == 'WordPress/wordpress-develop' || ( github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' ) }}
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if: ${{ github.repository == 'WordPress/wordpress-develop' }}
</ins><span class="cx" style="display: block; padding: 0 10px"> with:
</span><span class="cx" style="display: block; padding: 0 10px"> wp-version: ${{ github.event_name == 'pull_request' && github.base_ref || github.ref_name }}
</span><span class="cx" style="display: block; padding: 0 10px">
</span></span></pre></div>
<a id="trunkgithubworkflowsphpunittestsyml"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/.github/workflows/phpunit-tests.yml</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/.github/workflows/phpunit-tests.yml 2025-08-01 11:27:03 UTC (rev 60533)
+++ trunk/.github/workflows/phpunit-tests.yml 2025-08-01 12:42:18 UTC (rev 60534)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -63,7 +63,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> permissions:
</span><span class="cx" style="display: block; padding: 0 10px"> contents: read
</span><span class="cx" style="display: block; padding: 0 10px"> secrets: inherit
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- if: ${{ github.repository == 'WordPress/wordpress-develop' || ( github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' ) }}
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if: ${{ startsWith( github.repository, 'WordPress/' ) && ( github.repository == 'WordPress/wordpress-develop' || ( github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' ) ) }}
</ins><span class="cx" style="display: block; padding: 0 10px"> strategy:
</span><span class="cx" style="display: block; padding: 0 10px"> fail-fast: false
</span><span class="cx" style="display: block; padding: 0 10px"> matrix:
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -140,7 +140,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> permissions:
</span><span class="cx" style="display: block; padding: 0 10px"> contents: read
</span><span class="cx" style="display: block; padding: 0 10px"> secrets: inherit
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- if: ${{ github.repository == 'WordPress/wordpress-develop' || ( github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' ) }}
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if: ${{ startsWith( github.repository, 'WordPress/' ) && ( github.repository == 'WordPress/wordpress-develop' || ( github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' ) ) }}
</ins><span class="cx" style="display: block; padding: 0 10px"> strategy:
</span><span class="cx" style="display: block; padding: 0 10px"> fail-fast: false
</span><span class="cx" style="display: block; padding: 0 10px"> matrix:
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -192,7 +192,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> permissions:
</span><span class="cx" style="display: block; padding: 0 10px"> contents: read
</span><span class="cx" style="display: block; padding: 0 10px"> secrets: inherit
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- if: ${{ github.repository == 'WordPress/wordpress-develop' || ( github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' ) }}
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if: ${{ startsWith( github.repository, 'WordPress/' ) && ( github.repository == 'WordPress/wordpress-develop' || ( github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' ) ) }}
</ins><span class="cx" style="display: block; padding: 0 10px"> strategy:
</span><span class="cx" style="display: block; padding: 0 10px"> fail-fast: false
</span><span class="cx" style="display: block; padding: 0 10px"> matrix:
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -232,7 +232,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> permissions:
</span><span class="cx" style="display: block; padding: 0 10px"> contents: read
</span><span class="cx" style="display: block; padding: 0 10px"> secrets: inherit
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- if: ${{ github.repository == 'WordPress/wordpress-develop' || ( github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' ) }}
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if: ${{ startsWith( github.repository, 'WordPress/' ) && ( github.repository == 'WordPress/wordpress-develop' || ( github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' ) ) }}
</ins><span class="cx" style="display: block; padding: 0 10px"> strategy:
</span><span class="cx" style="display: block; padding: 0 10px"> fail-fast: false
</span><span class="cx" style="display: block; padding: 0 10px"> matrix:
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -246,6 +246,64 @@
</span><span class="cx" style="display: block; padding: 0 10px"> db-version: ${{ matrix.db-version }}
</span><span class="cx" style="display: block; padding: 0 10px"> phpunit-test-groups: ${{ matrix.phpunit-test-groups }}
</span><span class="cx" style="display: block; padding: 0 10px">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ #
+ # Runs unit tests for forks.
+ #
+ # Because the majority of forks will belong to personal GitHub accounts (which are limited to just 20 concurrent jobs
+ # at any given time), forks only run a small subset of test combinations. This allows contributors to open pull
+ # requests back to their own forks for testing purposes without having to wait hours for workflow to complete.
+ #
+ limited-matrix-for-forks:
+ name: PHP ${{ matrix.php }}
+ uses: ./.github/workflows/reusable-phpunit-tests-v3.yml
+ permissions:
+ contents: read
+ secrets: inherit
+ if: ${{ ! startsWith( github.repository, 'WordPress/' ) && github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' }}
+ strategy:
+ fail-fast: false
+ matrix:
+ php: [ '7.2', '8.4' ]
+ db-version: [ '8.4', '11.8' ]
+ db-type: [ 'mysql', 'mariadb' ]
+ multisite: [ false ]
+
+ include:
+ # Include one multisite job for each database type.
+ - php: '8.4'
+ db-version: '8.4'
+ db-type: 'mysql'
+ multisite: true
+ - php: '8.4'
+ db-version: '11.8'
+ db-type: 'mariadb'
+ multisite: true
+ # Test with memcached.
+ - php: '8.4'
+ db-version: '8.4'
+ db-type: 'mysql'
+ multisite: true
+ memcached: true
+ # Run specific test groups once.
+ - php: '8.4'
+ db-version: '8.4'
+ db-type: 'mysql'
+ phpunit-test-groups: 'html-api-html5lib-tests'
+
+ exclude:
+ # Exclude PHP versions that are not supported by the database versions.
+ - db-type: 'mysql'
+ db-version: '11.8'
+ - db-type: 'mariadb'
+ db-version: '8.4'
+
+ with:
+ php: ${{ matrix.php }}
+ db-version: ${{ matrix.db-version }}
+ db-type: ${{ matrix.db-type }}
+ memcached: ${{ matrix.memcached || false }}
+ phpunit-test-groups: ${{ matrix.phpunit-test-groups || '' }}
+
</ins><span class="cx" style="display: block; padding: 0 10px"> slack-notifications:
</span><span class="cx" style="display: block; padding: 0 10px"> name: Slack Notifications
</span><span class="cx" style="display: block; padding: 0 10px"> uses: ./.github/workflows/slack-notifications.yml
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -252,7 +310,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> permissions:
</span><span class="cx" style="display: block; padding: 0 10px"> actions: read
</span><span class="cx" style="display: block; padding: 0 10px"> contents: read
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- needs: [ test-with-mysql, test-with-mariadb, test-innovation-releases, specific-test-groups ]
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ needs: [ test-with-mysql, test-with-mariadb, test-innovation-releases, specific-test-groups, limited-matrix-for-forks ]
</ins><span class="cx" style="display: block; padding: 0 10px"> if: ${{ github.repository == 'WordPress/wordpress-develop' && github.event_name != 'pull_request' && always() }}
</span><span class="cx" style="display: block; padding: 0 10px"> with:
</span><span class="cx" style="display: block; padding: 0 10px"> calling_status: ${{ contains( needs.*.result, 'cancelled' ) && 'cancelled' || contains( needs.*.result, 'failure' ) && 'failure' || 'success' }}
</span></span></pre></div>
<a id="trunkgithubworkflowstestandzipdefaultthemesyml"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/.github/workflows/test-and-zip-default-themes.yml</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/.github/workflows/test-and-zip-default-themes.yml 2025-08-01 11:27:03 UTC (rev 60533)
+++ trunk/.github/workflows/test-and-zip-default-themes.yml 2025-08-01 12:42:18 UTC (rev 60534)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -189,7 +189,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> contents: read
</span><span class="cx" style="display: block; padding: 0 10px"> needs: [ check-for-empty-files, test-build-scripts ]
</span><span class="cx" style="display: block; padding: 0 10px"> timeout-minutes: 10
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if: ${{ github.repository == 'WordPress/wordpress-develop' }}
</ins><span class="cx" style="display: block; padding: 0 10px"> strategy:
</span><span class="cx" style="display: block; padding: 0 10px"> fail-fast: false
</span><span class="cx" style="display: block; padding: 0 10px"> matrix:
</span></span></pre></div>
<a id="trunkgithubworkflowstestbuildprocessesyml"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/.github/workflows/test-build-processes.yml</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/.github/workflows/test-build-processes.yml 2025-08-01 11:27:03 UTC (rev 60533)
+++ trunk/.github/workflows/test-build-processes.yml 2025-08-01 12:42:18 UTC (rev 60534)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -45,7 +45,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> permissions: {}
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> jobs:
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- # Tests the WordPress Core build process on multiple operating systems.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ # Tests the WordPress Core build process.
</ins><span class="cx" style="display: block; padding: 0 10px"> test-core-build-process:
</span><span class="cx" style="display: block; padding: 0 10px"> name: Core running from ${{ matrix.directory }}
</span><span class="cx" style="display: block; padding: 0 10px"> uses: ./.github/workflows/reusable-test-core-build-process.yml
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -55,15 +55,14 @@
</span><span class="cx" style="display: block; padding: 0 10px"> strategy:
</span><span class="cx" style="display: block; padding: 0 10px"> fail-fast: false
</span><span class="cx" style="display: block; padding: 0 10px"> matrix:
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- os: [ ubuntu-24.04, windows-2022 ]
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ os: [ 'ubuntu-24.04' ]
</ins><span class="cx" style="display: block; padding: 0 10px"> directory: [ 'src', 'build' ]
</span><span class="cx" style="display: block; padding: 0 10px"> include:
</span><span class="cx" style="display: block; padding: 0 10px"> # Only prepare artifacts for Playground once.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- - os: ubuntu-24.04
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ - os: 'ubuntu-24.04'
</ins><span class="cx" style="display: block; padding: 0 10px"> directory: 'build'
</span><span class="cx" style="display: block; padding: 0 10px"> save-build: true
</span><span class="cx" style="display: block; padding: 0 10px"> prepare-playground: ${{ github.event_name == 'pull_request' && true || '' }}
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px"> with:
</span><span class="cx" style="display: block; padding: 0 10px"> os: ${{ matrix.os }}
</span><span class="cx" style="display: block; padding: 0 10px"> directory: ${{ matrix.directory }}
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -70,15 +69,17 @@
</span><span class="cx" style="display: block; padding: 0 10px"> save-build: ${{ matrix.save-build && matrix.save-build || false }}
</span><span class="cx" style="display: block; padding: 0 10px"> prepare-playground: ${{ matrix.prepare-playground && matrix.prepare-playground || false }}
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- # Tests the WordPress Core build process on MacOS.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ # Tests the WordPress Core build process on additional operating systems.
</ins><span class="cx" style="display: block; padding: 0 10px"> #
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- # This is separate from the job above in order to use stricter conditions when determining when to run.
- # This avoids unintentionally consuming excessive minutes, as MacOS jobs consume minutes at a 10x rate.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ # This is separate from the job above in order to use stricter conditions when determining when to test additional
+ # operating systems. This avoids unintentionally consuming excessive minutes. Windows-based jobs consume minutes at a
+ # 2x rate, and MacOS-based jobs at a 10x rate.
+ # See https://docs.github.com/en/billing/concepts/product-billing/github-actions#per-minute-rates.
</ins><span class="cx" style="display: block; padding: 0 10px"> #
</span><span class="cx" style="display: block; padding: 0 10px"> # The `matrix` and `runner` contexts are not available for use within `if` expressions. So there is
</span><span class="cx" style="display: block; padding: 0 10px"> # currently no way to determine the OS being used on a given job.
</span><span class="cx" style="display: block; padding: 0 10px"> # See https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- test-core-build-process-macos:
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ test-core-build-process-additional-os:
</ins><span class="cx" style="display: block; padding: 0 10px"> name: Core running from ${{ matrix.directory }}
</span><span class="cx" style="display: block; padding: 0 10px"> uses: ./.github/workflows/reusable-test-core-build-process.yml
</span><span class="cx" style="display: block; padding: 0 10px"> permissions:
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -87,37 +88,39 @@
</span><span class="cx" style="display: block; padding: 0 10px"> strategy:
</span><span class="cx" style="display: block; padding: 0 10px"> fail-fast: false
</span><span class="cx" style="display: block; padding: 0 10px"> matrix:
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- os: [ macos-14 ]
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ os: [ 'macos-14', 'windows-2022' ]
</ins><span class="cx" style="display: block; padding: 0 10px"> directory: [ 'src', 'build' ]
</span><span class="cx" style="display: block; padding: 0 10px"> with:
</span><span class="cx" style="display: block; padding: 0 10px"> os: ${{ matrix.os }}
</span><span class="cx" style="display: block; padding: 0 10px"> directory: ${{ matrix.directory }}
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- # Tests the Gutenberg plugin build process on multiple operating systems when run within a wordpress-develop checkout.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ # Tests the Gutenberg plugin build process within a wordpress-develop checkout.
</ins><span class="cx" style="display: block; padding: 0 10px"> test-gutenberg-build-process:
</span><span class="cx" style="display: block; padding: 0 10px"> name: Gutenberg running from ${{ matrix.directory }}
</span><span class="cx" style="display: block; padding: 0 10px"> uses: ./.github/workflows/reusable-test-gutenberg-build-process.yml
</span><span class="cx" style="display: block; padding: 0 10px"> permissions:
</span><span class="cx" style="display: block; padding: 0 10px"> contents: read
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- if: ${{ github.repository == 'WordPress/wordpress-develop' || ( github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' ) }}
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if: ${{ github.repository == 'WordPress/wordpress-develop' }}
</ins><span class="cx" style="display: block; padding: 0 10px"> strategy:
</span><span class="cx" style="display: block; padding: 0 10px"> fail-fast: false
</span><span class="cx" style="display: block; padding: 0 10px"> matrix:
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- os: [ ubuntu-24.04, windows-2022 ]
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ os: [ 'ubuntu-24.04' ]
</ins><span class="cx" style="display: block; padding: 0 10px"> directory: [ 'src', 'build' ]
</span><span class="cx" style="display: block; padding: 0 10px"> with:
</span><span class="cx" style="display: block; padding: 0 10px"> os: ${{ matrix.os }}
</span><span class="cx" style="display: block; padding: 0 10px"> directory: ${{ matrix.directory }}
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- # Tests the Gutenberg plugin build process on MacOS when run within a wordpress-develop checkout.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ # Tests the Gutenberg plugin build process on additional operating systems.
</ins><span class="cx" style="display: block; padding: 0 10px"> #
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- # This is separate from the job above in order to use stricter conditions when determining when to run.
- # This avoids unintentionally consuming excessive minutes, as MacOS jobs consume minutes at a 10x rate.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ # This is separate from the job above in order to use stricter conditions when determining when to test additional
+ # operating systems. This avoids unintentionally consuming excessive minutes. Windows-based jobs consume minutes at a
+ # 2x rate, and MacOS-based jobs at a 10x rate.
+ # See https://docs.github.com/en/billing/concepts/product-billing/github-actions#per-minute-rates.
</ins><span class="cx" style="display: block; padding: 0 10px"> #
</span><span class="cx" style="display: block; padding: 0 10px"> # The `matrix` and `runner` contexts are not available for use within `if` expressions. So there is
</span><span class="cx" style="display: block; padding: 0 10px"> # currently no way to determine the OS being used on a given job.
</span><span class="cx" style="display: block; padding: 0 10px"> # See https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- test-gutenberg-build-process-macos:
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ test-gutenberg-build-process-additional-os:
</ins><span class="cx" style="display: block; padding: 0 10px"> name: Gutenberg running from ${{ matrix.directory }}
</span><span class="cx" style="display: block; padding: 0 10px"> uses: ./.github/workflows/reusable-test-gutenberg-build-process.yml
</span><span class="cx" style="display: block; padding: 0 10px"> permissions:
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -126,7 +129,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> strategy:
</span><span class="cx" style="display: block; padding: 0 10px"> fail-fast: false
</span><span class="cx" style="display: block; padding: 0 10px"> matrix:
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- os: [ macos-14 ]
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ os: [ 'macos-14', 'windows-2022' ]
</ins><span class="cx" style="display: block; padding: 0 10px"> directory: [ 'src', 'build' ]
</span><span class="cx" style="display: block; padding: 0 10px"> with:
</span><span class="cx" style="display: block; padding: 0 10px"> os: ${{ matrix.os }}
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -138,7 +141,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> permissions:
</span><span class="cx" style="display: block; padding: 0 10px"> actions: read
</span><span class="cx" style="display: block; padding: 0 10px"> contents: read
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- needs: [ test-core-build-process, test-core-build-process-macos, test-gutenberg-build-process, test-gutenberg-build-process-macos ]
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ needs: [ test-core-build-process, test-core-build-process-additional-os, test-gutenberg-build-process, test-gutenberg-build-process-additional-os ]
</ins><span class="cx" style="display: block; padding: 0 10px"> if: ${{ github.repository == 'WordPress/wordpress-develop' && github.event_name != 'pull_request' && always() }}
</span><span class="cx" style="display: block; padding: 0 10px"> with:
</span><span class="cx" style="display: block; padding: 0 10px"> calling_status: ${{ contains( needs.*.result, 'cancelled' ) && 'cancelled' || contains( needs.*.result, 'failure' ) && 'failure' || 'success' }}
</span></span></pre></div>
<a id="trunkgithubworkflowsupgradedeveloptestingyml"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/.github/workflows/upgrade-develop-testing.yml</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/.github/workflows/upgrade-develop-testing.yml 2025-08-01 11:27:03 UTC (rev 60533)
+++ trunk/.github/workflows/upgrade-develop-testing.yml 2025-08-01 12:42:18 UTC (rev 60534)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -47,6 +47,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> build:
</span><span class="cx" style="display: block; padding: 0 10px"> name: Build
</span><span class="cx" style="display: block; padding: 0 10px"> uses: ./.github/workflows/reusable-build-package.yml
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if: ${{ startsWith( github.repository, 'WordPress/' ) && ( github.repository == 'WordPress/wordpress-develop' || ( github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' ) ) }}
</ins><span class="cx" style="display: block; padding: 0 10px"> permissions:
</span><span class="cx" style="display: block; padding: 0 10px"> contents: read
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -54,7 +55,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> upgrade-tests-develop:
</span><span class="cx" style="display: block; padding: 0 10px"> name: Upgrade from ${{ matrix.wp }}
</span><span class="cx" style="display: block; padding: 0 10px"> uses: ./.github/workflows/reusable-upgrade-testing.yml
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- if: ${{ github.repository == 'WordPress/wordpress-develop' || ( github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' ) }}
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if: ${{ github.repository == 'WordPress/wordpress-develop' }}
</ins><span class="cx" style="display: block; padding: 0 10px"> needs: [ build ]
</span><span class="cx" style="display: block; padding: 0 10px"> strategy:
</span><span class="cx" style="display: block; padding: 0 10px"> fail-fast: false
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -83,6 +84,36 @@
</span><span class="cx" style="display: block; padding: 0 10px"> new-version: develop
</span><span class="cx" style="display: block; padding: 0 10px"> multisite: ${{ matrix.multisite }}
</span><span class="cx" style="display: block; padding: 0 10px">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ # Run a limited set of upgrade tests for the current branch on forks.
+ upgrade-tests-develop-forks:
+ name: Upgrade from ${{ matrix.wp }}
+ uses: ./.github/workflows/reusable-upgrade-testing.yml
+ if: ${{ github.repository != 'WordPress/wordpress-develop' }}
+ needs: [ build ]
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [ 'ubuntu-24.04' ]
+ php: [ '7.2', '8.4' ]
+ db-type: [ 'mysql' ]
+ db-version: [ '8.4' ]
+ # WordPress 4.9 is the oldest version that supports PHP 7.2.
+ wp: [ '6.7', '6.8' ]
+ 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 }}
+
</ins><span class="cx" style="display: block; padding: 0 10px"> slack-notifications:
</span><span class="cx" style="display: block; padding: 0 10px"> name: Slack Notifications
</span><span class="cx" style="display: block; padding: 0 10px"> uses: ./.github/workflows/slack-notifications.yml
</span></span></pre></div>
<a id="trunkgithubworkflowsupgradetestingyml"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/.github/workflows/upgrade-testing.yml</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/.github/workflows/upgrade-testing.yml 2025-08-01 11:27:03 UTC (rev 60533)
+++ trunk/.github/workflows/upgrade-testing.yml 2025-08-01 12:42:18 UTC (rev 60534)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -58,7 +58,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> upgrade-tests-recent-releases:
</span><span class="cx" style="display: block; padding: 0 10px"> name: ${{ matrix.wp }} to ${{ inputs.new-version && inputs.new-version || 'latest' }}
</span><span class="cx" style="display: block; padding: 0 10px"> uses: ./.github/workflows/reusable-upgrade-testing.yml
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- if: ${{ github.repository == 'WordPress/wordpress-develop' || ( github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' ) }}
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if: ${{ github.repository == 'WordPress/wordpress-develop' }}
</ins><span class="cx" style="display: block; padding: 0 10px"> strategy:
</span><span class="cx" style="display: block; padding: 0 10px"> fail-fast: false
</span><span class="cx" style="display: block; padding: 0 10px"> matrix:
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -93,7 +93,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> upgrade-tests-wp-6x-mysql:
</span><span class="cx" style="display: block; padding: 0 10px"> name: ${{ matrix.wp }} to ${{ inputs.new-version && inputs.new-version || 'latest' }}
</span><span class="cx" style="display: block; padding: 0 10px"> uses: ./.github/workflows/reusable-upgrade-testing.yml
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- if: ${{ github.repository == 'WordPress/wordpress-develop' || ( github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' ) }}
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if: ${{ github.repository == 'WordPress/wordpress-develop' }}
</ins><span class="cx" style="display: block; padding: 0 10px"> strategy:
</span><span class="cx" style="display: block; padding: 0 10px"> fail-fast: false
</span><span class="cx" style="display: block; padding: 0 10px"> matrix:
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -121,7 +121,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> upgrade-tests-wp-5x-php-7x-mysql:
</span><span class="cx" style="display: block; padding: 0 10px"> name: ${{ matrix.wp }} to ${{ inputs.new-version && inputs.new-version || 'latest' }}
</span><span class="cx" style="display: block; padding: 0 10px"> uses: ./.github/workflows/reusable-upgrade-testing.yml
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- if: ${{ github.repository == 'WordPress/wordpress-develop' || ( github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' ) }}
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if: ${{ github.repository == 'WordPress/wordpress-develop' }}
</ins><span class="cx" style="display: block; padding: 0 10px"> strategy:
</span><span class="cx" style="display: block; padding: 0 10px"> fail-fast: false
</span><span class="cx" style="display: block; padding: 0 10px"> matrix:
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -153,7 +153,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> upgrade-tests-wp-5x-php-8x-mysql:
</span><span class="cx" style="display: block; padding: 0 10px"> name: ${{ matrix.wp }} to ${{ inputs.new-version && inputs.new-version || 'latest' }}
</span><span class="cx" style="display: block; padding: 0 10px"> uses: ./.github/workflows/reusable-upgrade-testing.yml
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- if: ${{ github.repository == 'WordPress/wordpress-develop' || ( github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' ) }}
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if: ${{ github.repository == 'WordPress/wordpress-develop' }}
</ins><span class="cx" style="display: block; padding: 0 10px"> strategy:
</span><span class="cx" style="display: block; padding: 0 10px"> fail-fast: false
</span><span class="cx" style="display: block; padding: 0 10px"> matrix:
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -181,7 +181,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> upgrade-tests-oldest-wp-mysql:
</span><span class="cx" style="display: block; padding: 0 10px"> name: ${{ matrix.wp }} to ${{ inputs.new-version && inputs.new-version || 'latest' }}
</span><span class="cx" style="display: block; padding: 0 10px"> uses: ./.github/workflows/reusable-upgrade-testing.yml
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- if: ${{ github.repository == 'WordPress/wordpress-develop' || ( github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' ) }}
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if: ${{ github.repository == 'WordPress/wordpress-develop' }}
</ins><span class="cx" style="display: block; padding: 0 10px"> strategy:
</span><span class="cx" style="display: block; padding: 0 10px"> fail-fast: false
</span><span class="cx" style="display: block; padding: 0 10px"> matrix:
</span></span></pre>
</div>
</div>
</body>
</html>