<!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>[58357] branches/6.0: Build/Test Tools: Make use of new reusable workflows for 6.0.</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/58357">58357</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/58357","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>2024-06-06 15:27:31 +0000 (Thu, 06 Jun 2024)</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: Make use of new reusable workflows for 6.0.
This updates the 6.0 branch to utilize the new reusable workflows in trunk introduced in <a href="https://core.trac.wordpress.org/changeset/58165">[58165]</a>.
This also includes backports for a some additional improvements and bug fixes that are necessary for the local development environment to continue working long term:
- The `image` and `platform` properties for the `mysql` container have been updated to always prefer `amd64` containers (<a href="https://core.trac.wordpress.org/ticket/60822">#60822</a>).
- `macos-13` is now pinned for MacOS jobs instead of `macos-latest` (<a href="https://core.trac.wordpress.org/ticket/61340">#61340</a>).
- Run E2E tests with and without `SCRIPT_DEBUG` (<a href="https://core.trac.wordpress.org/ticket/58661">#58661</a>).
- Migrating to Docker Compose V2 (<a href="https://core.trac.wordpress.org/ticket/60901">#60901</a>).
- Removing the `version` property from `docker-compose.yml` (<a href="https://core.trac.wordpress.org/ticket/59416">#59416</a>).
- Improvements to how artifacts and comments for Playground testing are generated.
- Removing SVN related commands causing failures (<a href="https://core.trac.wordpress.org/ticket/61216">#61216</a>).
- Updating the `actions/github-scripts` action to the latest version.
- Move the Memcached container into the Docker Compose config (<a href="https://core.trac.wordpress.org/ticket/55700">#55700</a>).
- Configure Xdebug modes in the local Docker environment (<a href="https://core.trac.wordpress.org/ticket/56022">#56022</a>).
Merges <a href="https://core.trac.wordpress.org/changeset/53895">[53895]</a>, <a href="https://core.trac.wordpress.org/changeset/53552">[53552]</a>, <a href="https://core.trac.wordpress.org/changeset/56113">[56113]</a>, <a href="https://core.trac.wordpress.org/changeset/56114">[56114]</a>, <a href="https://core.trac.wordpress.org/changeset/57918">[57918]</a>, <a href="https://core.trac.wordpress.org/changeset/58157">[58157]</a>, <a href="https://core.trac.wordpress.org/changeset/57124">[57124]</a>, <a href="https://core.trac.wordpress.org/changeset/57125">[57125]</a>, <a href="https://core.trac.wordpress.org/changeset/57249">[57249]</a> to the 6.0 branch.
Props johnbillion, joemcgill, swissspidy, thelovekesh, narenin, mukesh27, JeffPaul, peterwilsoncc, zieladam, ockham, SergeyBiryukov, jorbin, Clorith, afragen.
See <a href="https://core.trac.wordpress.org/ticket/55700">#55700</a>, <a href="https://core.trac.wordpress.org/ticket/61340">#61340</a>, <a href="https://core.trac.wordpress.org/ticket/60822">#60822</a>, <a href="https://core.trac.wordpress.org/ticket/61216">#61216</a>, <a href="https://core.trac.wordpress.org/ticket/60901">#60901</a>, <a href="https://core.trac.wordpress.org/ticket/61101">#61101</a>, <a href="https://core.trac.wordpress.org/ticket/59416">#59416</a>, <a href="https://core.trac.wordpress.org/ticket/59805">#59805</a>, <a href="https://core.trac.wordpress.org/ticket/61213">#61213</a>, <a href="https://core.trac.wordpress.org/ticket/58661">#58661</a>.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#branches60githubworkflowscodingstandardsyml">branches/6.0/.github/workflows/coding-standards.yml</a></li>
<li><a href="#branches60githubworkflowsendtoendtestsyml">branches/6.0/.github/workflows/end-to-end-tests.yml</a></li>
<li><a href="#branches60githubworkflowsjavascripttestsyml">branches/6.0/.github/workflows/javascript-tests.yml</a></li>
<li><a href="#branches60githubworkflowsphpcompatibilityyml">branches/6.0/.github/workflows/php-compatibility.yml</a></li>
<li><a href="#branches60githubworkflowsphpunittestsyml">branches/6.0/.github/workflows/phpunit-tests.yml</a></li>
<li><a href="#branches60dockercomposeyml">branches/6.0/docker-compose.yml</a></li>
<li><a href="#branches60toolslocalenvscriptsdockerjs">branches/6.0/tools/local-env/scripts/docker.js</a></li>
<li><a href="#branches60toolslocalenvscriptsinstalljs">branches/6.0/tools/local-env/scripts/install.js</a></li>
<li><a href="#branches60toolslocalenvscriptsstartjs">branches/6.0/tools/local-env/scripts/start.js</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#branches60githubworkflowstestbuildprocessesyml">branches/6.0/.github/workflows/test-build-processes.yml</a></li>
</ul>
<h3>Removed Paths</h3>
<ul>
<li><a href="#branches60githubworkflowstestnpmyml">branches/6.0/.github/workflows/test-npm.yml</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="branches60githubworkflowscodingstandardsyml"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/6.0/.github/workflows/coding-standards.yml</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/6.0/.github/workflows/coding-standards.yml 2024-06-06 14:34:58 UTC (rev 58356)
+++ branches/6.0/.github/workflows/coding-standards.yml 2024-06-06 15:27:31 UTC (rev 58357)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9,8 +9,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> - '3.[89]'
</span><span class="cx" style="display: block; padding: 0 10px"> - '[4-9].[0-9]'
</span><span class="cx" style="display: block; padding: 0 10px"> tags:
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- - '3.[89]*'
- - '[4-9].[0-9]*'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ - '[0-9]+.[0-9]'
+ - '[0-9]+.[0-9].[0-9]+'
+ - '!3.7.[0-9]+'
</ins><span class="cx" style="display: block; padding: 0 10px"> pull_request:
</span><span class="cx" style="display: block; padding: 0 10px"> branches:
</span><span class="cx" style="display: block; padding: 0 10px"> - trunk
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -39,130 +40,35 @@
</span><span class="cx" style="display: block; padding: 0 10px"> group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }}
</span><span class="cx" style="display: block; padding: 0 10px"> cancel-in-progress: true
</span><span class="cx" style="display: block; padding: 0 10px">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+# Disable permissions for all available scopes by default.
+# Any needed permissions should be configured at the job level.
+permissions: {}
+
</ins><span class="cx" style="display: block; padding: 0 10px"> jobs:
</span><span class="cx" style="display: block; padding: 0 10px"> # Runs PHP coding standards checks.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- #
- # Violations are reported inline with annotations.
- #
- # Performs the following steps:
- # - Checks out the repository.
- # - Sets up PHP.
- # - Configures caching for PHPCS scans.
- # - Installs Composer dependencies.
- # - Make Composer packages available globally.
- # - Runs PHPCS on the full codebase with warnings suppressed.
- # - Generate a report for displaying issues as pull request annotations.
- # - Runs PHPCS on the `tests` directory without warnings suppressed.
- # - Generate a report for displaying `test` directory issues as pull request annotations.
- # - Ensures version-controlled files are not modified or deleted.
</del><span class="cx" style="display: block; padding: 0 10px"> phpcs:
</span><span class="cx" style="display: block; padding: 0 10px"> name: PHP coding standards
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- runs-on: ubuntu-latest
- timeout-minutes: 20
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ uses: WordPress/wordpress-develop/.github/workflows/reusable-coding-standards-php.yml@trunk
+ permissions:
+ contents: read
</ins><span class="cx" style="display: block; padding: 0 10px"> if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ with:
+ php-version: '7.4'
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- steps:
- - name: Checkout repository
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
-
- - name: Set up PHP
- uses: shivammathur/setup-php@d30ad8b1843ace22e6698ab99bbafaa747b6bd0d # v2.24.0
- with:
- php-version: '7.4'
- coverage: none
- tools: cs2pr
-
- # This date is used to ensure that the PHPCS cache is cleared at least once every week.
- # http://man7.org/linux/man-pages/man1/date.1.html
- - name: "Get last Monday's date"
- id: get-date
- run: echo "date=$(/bin/date -u --date='last Mon' "+%F")" >> $GITHUB_OUTPUT
-
- - name: Cache PHPCS scan cache
- uses: actions/cache@69d9d449aced6a2ede0bc19182fadc3a0a42d2b0 # v3.2.6
- with:
- path: |
- .cache/phpcs-src.json
- .cache/phpcs-tests.json
- key: ${{ runner.os }}-date-${{ steps.get-date.outputs.date }}-phpcs-cache-${{ hashFiles('**/composer.json', 'phpcs.xml.dist') }}
-
- # Since Composer dependencies are installed using `composer update` and no lock file is in version control,
- # passing a custom cache suffix ensures that the cache is flushed at least once per week.
- - name: Install Composer dependencies
- uses: ramsey/composer-install@83af392bf5f031813d25e6fe4cd626cdba9a2df6 # v2.2.0
- with:
- custom-cache-suffix: ${{ steps.get-date.outputs.date }}
-
- - name: Make Composer packages available globally
- run: echo "${PWD}/vendor/bin" >> $GITHUB_PATH
-
- - name: Run PHPCS on all Core files
- id: phpcs-core
- run: phpcs -n --report-full --cache=./.cache/phpcs-src.json --report-checkstyle=./.cache/phpcs-report.xml
-
- - name: Show PHPCS results in PR
- if: ${{ always() && steps.phpcs-core.outcome == 'failure' }}
- run: cs2pr ./.cache/phpcs-report.xml
-
- - name: Check test suite files for warnings
- id: phpcs-tests
- run: phpcs tests --report-full --cache=./.cache/phpcs-tests.json --report-checkstyle=./.cache/phpcs-tests-report.xml
-
- - name: Show test suite scan results in PR
- if: ${{ always() && steps.phpcs-tests.outcome == 'failure' }}
- run: cs2pr ./.cache/phpcs-tests-report.xml
-
- - name: Ensure version-controlled files are not modified during the tests
- run: git diff --exit-code
-
</del><span class="cx" style="display: block; padding: 0 10px"> # Runs the JavaScript coding standards checks.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- #
- # JSHint violations are not currently reported inline with annotations.
- #
- # Performs the following steps:
- # - Checks out the repository.
- # - Sets up Node.js.
- # - Logs debug information about the GitHub Action runner.
- # - Installs npm dependencies.
- # - Run the WordPress JSHint checks.
- # - Ensures version-controlled files are not modified or deleted.
</del><span class="cx" style="display: block; padding: 0 10px"> jshint:
</span><span class="cx" style="display: block; padding: 0 10px"> name: JavaScript coding standards
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- runs-on: ubuntu-latest
- timeout-minutes: 20
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ uses: WordPress/wordpress-develop/.github/workflows/reusable-coding-standards-javascript.yml@trunk
+ permissions:
+ contents: read
</ins><span class="cx" style="display: block; padding: 0 10px"> if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- env:
- PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: ${{ true }}
</del><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- steps:
- - name: Checkout repository
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
-
- - name: Set up Node.js
- uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
- with:
- node-version-file: '.nvmrc'
- cache: npm
-
- - name: Log debug information
- run: |
- npm --version
- node --version
- git --version
- svn --version
-
- - name: Install npm Dependencies
- run: npm ci
-
- - name: Run JSHint
- run: npm run grunt jshint
-
- - name: Ensure version-controlled files are not modified or deleted
- run: git diff --exit-code
-
</del><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: WordPress/wordpress-develop/.github/workflows/slack-notifications.yml@trunk
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ permissions:
+ actions: read
+ contents: read
</ins><span class="cx" style="display: block; padding: 0 10px"> needs: [ phpcs, jshint ]
</span><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="lines" style="display: block; padding: 0 10px; color: #888">@@ -176,6 +82,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> failed-workflow:
</span><span class="cx" style="display: block; padding: 0 10px"> name: Failed workflow tasks
</span><span class="cx" style="display: block; padding: 0 10px"> runs-on: ubuntu-latest
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ permissions:
+ actions: write
</ins><span class="cx" style="display: block; padding: 0 10px"> needs: [ phpcs, jshint, slack-notifications ]
</span><span class="cx" style="display: block; padding: 0 10px"> if: |
</span><span class="cx" style="display: block; padding: 0 10px"> always() &&
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -189,7 +97,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> steps:
</span><span class="cx" style="display: block; padding: 0 10px"> - name: Dispatch workflow run
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975 # v6.4.0
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
</ins><span class="cx" style="display: block; padding: 0 10px"> with:
</span><span class="cx" style="display: block; padding: 0 10px"> retries: 2
</span><span class="cx" style="display: block; padding: 0 10px"> retry-exempt-status-codes: 418
</span></span></pre></div>
<a id="branches60githubworkflowsendtoendtestsyml"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/6.0/.github/workflows/end-to-end-tests.yml</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/6.0/.github/workflows/end-to-end-tests.yml 2024-06-06 14:34:58 UTC (rev 58356)
+++ branches/6.0/.github/workflows/end-to-end-tests.yml 2024-06-06 15:27:31 UTC (rev 58357)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8,8 +8,10 @@
</span><span class="cx" style="display: block; padding: 0 10px"> - '5.[3-9]'
</span><span class="cx" style="display: block; padding: 0 10px"> - '[6-9].[0-9]'
</span><span class="cx" style="display: block; padding: 0 10px"> tags:
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- - '5.[3-9]*'
- - '[6-9].[0-9]*'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ - '[0-9]+.[0-9]'
+ - '[0-9]+.[0-9].[0-9]+'
+ - '![34].[0-9].[0-9]+'
+ - '!5.[0-2].[0-9]+'
</ins><span class="cx" style="display: block; padding: 0 10px"> pull_request:
</span><span class="cx" style="display: block; padding: 0 10px"> branches:
</span><span class="cx" style="display: block; padding: 0 10px"> - trunk
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -24,105 +26,36 @@
</span><span class="cx" style="display: block; padding: 0 10px"> group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }}
</span><span class="cx" style="display: block; padding: 0 10px"> cancel-in-progress: true
</span><span class="cx" style="display: block; padding: 0 10px">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+# Disable permissions for all available scopes by default.
+# Any needed permissions should be configured at the job level.
+permissions: {}
+
</ins><span class="cx" style="display: block; padding: 0 10px"> env:
</span><span class="cx" style="display: block; padding: 0 10px"> LOCAL_DIR: build
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- LOCAL_PHP: 8.0-fpm
</del><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> jobs:
</span><span class="cx" style="display: block; padding: 0 10px"> # Runs the end-to-end test suite.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- #
- # Performs the following steps:
- # - Sets environment variables.
- # - Checks out the repository.
- # - Sets up Node.js.
- # - Logs debug information about the GitHub Action runner.
- # - Installs npm dependencies.
- # - Builds WordPress to run from the `build` directory.
- # - Starts the WordPress Docker container.
- # - Logs the running Docker containers.
- # - Logs Docker debug information (about both the Docker installation within the runner and the WordPress container).
- # - Install WordPress within the Docker container.
- # - Run the E2E tests.
- # - Ensures version-controlled files are not modified or deleted.
</del><span class="cx" style="display: block; padding: 0 10px"> e2e-tests:
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- name: E2E Tests
- runs-on: ubuntu-latest
- timeout-minutes: 20
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ name: Test with SCRIPT_DEBUG ${{ matrix.LOCAL_SCRIPT_DEBUG && 'enabled' || 'disabled' }}
+ uses: WordPress/wordpress-develop/.github/workflows/reusable-end-to-end-tests.yml@trunk
+ permissions:
+ contents: read
</ins><span class="cx" style="display: block; padding: 0 10px"> if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
- steps:
- - name: Configure environment variables
- run: |
- echo "PHP_FPM_UID=$(id -u)" >> $GITHUB_ENV
- echo "PHP_FPM_GID=$(id -g)" >> $GITHUB_ENV
-
- - name: Checkout repository
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
-
- - name: Set up Node.js
- uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
- with:
- node-version-file: '.nvmrc'
- cache: npm
-
- - name: Log debug information
- run: |
- npm --version
- node --version
- curl --version
- git --version
- svn --version
- locale -a
-
- - name: Install npm Dependencies
- run: npm ci
-
- - name: Build WordPress
- run: npm run build
-
- - name: Start Docker environment
- run: |
- npm run env:start
-
- - name: Log running Docker containers
- run: docker ps -a
-
- - name: Docker debug information
- run: |
- docker -v
- docker-compose -v
- docker-compose run --rm mysql mysql --version
- docker-compose run --rm php php --version
- docker-compose run --rm php php -m
- docker-compose run --rm php php -i
- docker-compose run --rm php locale -a
-
- - name: Install WordPress
- run: npm run env:install
-
- - name: Run E2E tests
- run: npm run test:e2e
-
- - name: Ensure version-controlled files are not modified or deleted
- run: git diff --exit-code
-
- slack-notifications:
- name: Slack Notifications
- uses: WordPress/wordpress-develop/.github/workflows/slack-notifications.yml@trunk
- needs: [ e2e-tests ]
- if: ${{ github.repository == 'WordPress/wordpress-develop' && github.event_name != 'pull_request' && always() }}
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ strategy:
+ fail-fast: false
+ matrix:
+ LOCAL_SCRIPT_DEBUG: [ true, false ]
</ins><span class="cx" style="display: block; padding: 0 10px"> with:
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- calling_status: ${{ needs.e2e-tests.result == 'success' && 'success' || needs.e2e-tests.result == 'cancelled' && 'cancelled' || 'failure' }}
- 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 }}
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ LOCAL_SCRIPT_DEBUG: ${{ matrix.LOCAL_SCRIPT_DEBUG }}
+ php-version: '8.0'
+ install-gutenberg: false
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> failed-workflow:
</span><span class="cx" style="display: block; padding: 0 10px"> name: Failed workflow tasks
</span><span class="cx" style="display: block; padding: 0 10px"> runs-on: ubuntu-latest
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- needs: [ e2e-tests, slack-notifications ]
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ permissions:
+ actions: write
+ needs: [ e2e-tests ]
</ins><span class="cx" style="display: block; padding: 0 10px"> if: |
</span><span class="cx" style="display: block; padding: 0 10px"> always() &&
</span><span class="cx" style="display: block; padding: 0 10px"> github.repository == 'WordPress/wordpress-develop' &&
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -131,10 +64,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> (
</span><span class="cx" style="display: block; padding: 0 10px"> needs.e2e-tests.result == 'cancelled' || needs.e2e-tests.result == 'failure'
</span><span class="cx" style="display: block; padding: 0 10px"> )
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px"> steps:
</span><span class="cx" style="display: block; padding: 0 10px"> - name: Dispatch workflow run
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975 # v6.4.0
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
</ins><span class="cx" style="display: block; padding: 0 10px"> with:
</span><span class="cx" style="display: block; padding: 0 10px"> retries: 2
</span><span class="cx" style="display: block; padding: 0 10px"> retry-exempt-status-codes: 418
</span></span></pre></div>
<a id="branches60githubworkflowsjavascripttestsyml"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/6.0/.github/workflows/javascript-tests.yml</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/6.0/.github/workflows/javascript-tests.yml 2024-06-06 14:34:58 UTC (rev 58356)
+++ branches/6.0/.github/workflows/javascript-tests.yml 2024-06-06 15:27:31 UTC (rev 58357)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8,8 +8,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> - '3.[89]'
</span><span class="cx" style="display: block; padding: 0 10px"> - '[4-9].[0-9]'
</span><span class="cx" style="display: block; padding: 0 10px"> tags:
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- - '3.[89]*'
- - '[4-9].[0-9]*'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ - '[0-9]+.[0-9]'
+ - '[0-9]+.[0-9].[0-9]+'
+ - '!3.7.[0-9]+'
</ins><span class="cx" style="display: block; padding: 0 10px"> pull_request:
</span><span class="cx" style="display: block; padding: 0 10px"> branches:
</span><span class="cx" style="display: block; padding: 0 10px"> - trunk
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -37,51 +38,25 @@
</span><span class="cx" style="display: block; padding: 0 10px"> group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }}
</span><span class="cx" style="display: block; padding: 0 10px"> cancel-in-progress: true
</span><span class="cx" style="display: block; padding: 0 10px">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+# Disable permissions for all available scopes by default.
+# Any needed permissions should be configured at the job level.
+permissions: {}
+
</ins><span class="cx" style="display: block; padding: 0 10px"> jobs:
</span><span class="cx" style="display: block; padding: 0 10px"> # Runs the QUnit tests for WordPress.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- #
- # Performs the following steps:
- # - Checks out the repository.
- # - Sets up Node.js.
- # - Logs debug information about the GitHub Action runner.
- # - Installs npm dependencies.
- # - Run the WordPress QUnit tests.
- # - Ensures version-controlled files are not modified or deleted.
</del><span class="cx" style="display: block; padding: 0 10px"> test-js:
</span><span class="cx" style="display: block; padding: 0 10px"> name: QUnit Tests
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- runs-on: ubuntu-latest
- timeout-minutes: 20
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ uses: WordPress/wordpress-develop/.github/workflows/reusable-javascript-tests.yml@trunk
+ permissions:
+ contents: read
</ins><span class="cx" style="display: block; padding: 0 10px"> if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- steps:
- - name: Checkout repository
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
-
- - name: Set up Node.js
- uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
- with:
- node-version-file: '.nvmrc'
- cache: npm
-
- - name: Log debug information
- run: |
- npm --version
- node --version
- git --version
- svn --version
-
- - name: Install npm Dependencies
- run: npm ci
-
- - name: Run QUnit tests
- run: npm run grunt qunit:compiled
-
- - name: Ensure version-controlled files are not modified or deleted
- run: git diff --exit-code
-
</del><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: WordPress/wordpress-develop/.github/workflows/slack-notifications.yml@trunk
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ permissions:
+ actions: read
+ contents: read
</ins><span class="cx" style="display: block; padding: 0 10px"> needs: [ test-js ]
</span><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="lines" style="display: block; padding: 0 10px; color: #888">@@ -95,6 +70,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> failed-workflow:
</span><span class="cx" style="display: block; padding: 0 10px"> name: Failed workflow tasks
</span><span class="cx" style="display: block; padding: 0 10px"> runs-on: ubuntu-latest
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ permissions:
+ actions: write
</ins><span class="cx" style="display: block; padding: 0 10px"> needs: [ test-js, slack-notifications ]
</span><span class="cx" style="display: block; padding: 0 10px"> if: |
</span><span class="cx" style="display: block; padding: 0 10px"> always() &&
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -107,7 +84,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> steps:
</span><span class="cx" style="display: block; padding: 0 10px"> - name: Dispatch workflow run
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975 # v6.4.0
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
</ins><span class="cx" style="display: block; padding: 0 10px"> with:
</span><span class="cx" style="display: block; padding: 0 10px"> retries: 2
</span><span class="cx" style="display: block; padding: 0 10px"> retry-exempt-status-codes: 418
</span></span></pre></div>
<a id="branches60githubworkflowsphpcompatibilityyml"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/6.0/.github/workflows/php-compatibility.yml</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/6.0/.github/workflows/php-compatibility.yml 2024-06-06 14:34:58 UTC (rev 58356)
+++ branches/6.0/.github/workflows/php-compatibility.yml 2024-06-06 15:27:31 UTC (rev 58357)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8,8 +8,10 @@
</span><span class="cx" style="display: block; padding: 0 10px"> - '5.[5-9]'
</span><span class="cx" style="display: block; padding: 0 10px"> - '[6-9].[0-9]'
</span><span class="cx" style="display: block; padding: 0 10px"> tags:
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- - '5.[5-9]*'
- - '[6-9].[0-9]*'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ - '[0-9]+.[0-9]'
+ - '[0-9]+.[0-9].[0-9]+'
+ - '![34].[0-9].[0-9]+'
+ - '!5.[0-4].[0-9]+'
</ins><span class="cx" style="display: block; padding: 0 10px"> pull_request:
</span><span class="cx" style="display: block; padding: 0 10px"> branches:
</span><span class="cx" style="display: block; padding: 0 10px"> - trunk
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,79 +35,27 @@
</span><span class="cx" style="display: block; padding: 0 10px"> group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }}
</span><span class="cx" style="display: block; padding: 0 10px"> cancel-in-progress: true
</span><span class="cx" style="display: block; padding: 0 10px">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+# Disable permissions for all available scopes by default.
+# Any needed permissions should be configured at the job level.
+permissions: {}
+
</ins><span class="cx" style="display: block; padding: 0 10px"> jobs:
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px"> # Runs PHP compatibility testing.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- #
- # Violations are reported inline with annotations.
- #
- # Performs the following steps:
- # - Checks out the repository.
- # - Sets up PHP.
- # - Logs debug information.
- # - Configures caching for PHP compatibility scans.
- # - Installs Composer dependencies.
- # - Make Composer packages available globally.
- # - Runs the PHP compatibility tests.
- # - Generate a report for displaying issues as pull request annotations.
- # - Ensures version-controlled files are not modified or deleted.
</del><span class="cx" style="display: block; padding: 0 10px"> php-compatibility:
</span><span class="cx" style="display: block; padding: 0 10px"> name: Check PHP compatibility
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- runs-on: ubuntu-latest
- timeout-minutes: 20
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ uses: WordPress/wordpress-develop/.github/workflows/reusable-php-compatibility.yml@trunk
+ permissions:
+ contents: read
</ins><span class="cx" style="display: block; padding: 0 10px"> if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ with:
+ php-version: '7.4'
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- steps:
- - name: Checkout repository
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
-
- - name: Set up PHP
- uses: shivammathur/setup-php@d30ad8b1843ace22e6698ab99bbafaa747b6bd0d # v2.24.0
- with:
- php-version: '7.4'
- coverage: none
- tools: cs2pr
-
- - name: Log debug information
- run: |
- composer --version
-
- # This date is used to ensure that the PHP compatibility cache is cleared at least once every week.
- # http://man7.org/linux/man-pages/man1/date.1.html
- - name: "Get last Monday's date"
- id: get-date
- run: echo "date=$(/bin/date -u --date='last Mon' "+%F")" >> $GITHUB_OUTPUT
-
- - name: Cache PHP compatibility scan cache
- uses: actions/cache@69d9d449aced6a2ede0bc19182fadc3a0a42d2b0 # v3.2.6
- with:
- path: .cache/phpcompat.json
- key: ${{ runner.os }}-date-${{ steps.get-date.outputs.date }}-phpcompat-cache-${{ hashFiles('**/composer.json', 'phpcompat.xml.dist') }}
-
- # Since Composer dependencies are installed using `composer update` and no lock file is in version control,
- # passing a custom cache suffix ensures that the cache is flushed at least once per week.
- - name: Install Composer dependencies
- uses: ramsey/composer-install@83af392bf5f031813d25e6fe4cd626cdba9a2df6 # v2.2.0
- with:
- custom-cache-suffix: ${{ steps.get-date.outputs.date }}
-
- - name: Make Composer packages available globally
- run: echo "${PWD}/vendor/bin" >> $GITHUB_PATH
-
- - name: Run PHP compatibility tests
- id: phpcs
- run: phpcs --standard=phpcompat.xml.dist --report-full --report-checkstyle=./.cache/phpcs-compat-report.xml
-
- - name: Show PHPCompatibility results in PR
- if: ${{ always() && steps.phpcs.outcome == 'failure' }}
- run: cs2pr ./.cache/phpcs-compat-report.xml
-
- - name: Ensure version-controlled files are not modified or deleted
- run: git diff --exit-code
-
</del><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: WordPress/wordpress-develop/.github/workflows/slack-notifications.yml@trunk
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ permissions:
+ actions: read
+ contents: read
</ins><span class="cx" style="display: block; padding: 0 10px"> needs: [ php-compatibility ]
</span><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="lines" style="display: block; padding: 0 10px; color: #888">@@ -119,6 +69,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> failed-workflow:
</span><span class="cx" style="display: block; padding: 0 10px"> name: Failed workflow tasks
</span><span class="cx" style="display: block; padding: 0 10px"> runs-on: ubuntu-latest
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ permissions:
+ actions: write
</ins><span class="cx" style="display: block; padding: 0 10px"> needs: [ php-compatibility, slack-notifications ]
</span><span class="cx" style="display: block; padding: 0 10px"> if: |
</span><span class="cx" style="display: block; padding: 0 10px"> always() &&
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -131,7 +83,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> steps:
</span><span class="cx" style="display: block; padding: 0 10px"> - name: Dispatch workflow run
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975 # v6.4.0
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
</ins><span class="cx" style="display: block; padding: 0 10px"> with:
</span><span class="cx" style="display: block; padding: 0 10px"> retries: 2
</span><span class="cx" style="display: block; padding: 0 10px"> retry-exempt-status-codes: 418
</span></span></pre></div>
<a id="branches60githubworkflowsphpunittestsyml"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/6.0/.github/workflows/phpunit-tests.yml</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/6.0/.github/workflows/phpunit-tests.yml 2024-06-06 14:34:58 UTC (rev 58356)
+++ branches/6.0/.github/workflows/phpunit-tests.yml 2024-06-06 15:27:31 UTC (rev 58357)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7,8 +7,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> - '3.[7-9]'
</span><span class="cx" style="display: block; padding: 0 10px"> - '[4-9].[0-9]'
</span><span class="cx" style="display: block; padding: 0 10px"> tags:
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- - '3.[7-9]*'
- - '[4-9].[0-9]*'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ - '[0-9]+.[0-9]'
+ - '[0-9]+.[0-9].[0-9]+'
</ins><span class="cx" style="display: block; padding: 0 10px"> pull_request:
</span><span class="cx" style="display: block; padding: 0 10px"> branches:
</span><span class="cx" style="display: block; padding: 0 10px"> - trunk
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -26,208 +26,74 @@
</span><span class="cx" style="display: block; padding: 0 10px"> group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }}
</span><span class="cx" style="display: block; padding: 0 10px"> cancel-in-progress: true
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-env:
- PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: ${{ true }}
- LOCAL_PHP_MEMCACHED: ${{ false }}
- SLOW_TESTS: 'external-http,media,restapi'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+# Disable permissions for all available scopes by default.
+# Any needed permissions should be configured at the job level.
+permissions: {}
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> jobs:
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- # Runs the PHPUnit tests for WordPress.
</del><span class="cx" style="display: block; padding: 0 10px"> #
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- # Note: Steps running tests for PHP 8.1 jobs are allowed to "continue-on-error".
- # This prevents workflow runs from being marked as "failed" when only PHP 8.1 fails.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ # Creates a PHPUnit test job for each PHP/MySQL combination.
</ins><span class="cx" style="display: block; padding: 0 10px"> #
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- # Performs the following steps:
- # - Sets environment variables.
- # - Checks out the repository.
- # - Sets up Node.js.
- # - Sets up PHP.
- # - Installs Composer dependencies.
- # - Installs npm dependencies
- # - Logs general debug information about the runner.
- # - Logs Docker debug information (about the Docker installation within the runner).
- # - Starts the WordPress Docker container.
- # - Logs the running Docker containers.
- # - Logs debug information about what's installed within the WordPress Docker containers.
- # - Install WordPress within the Docker container.
- # - Run the PHPUnit tests.
- # - Ensures version-controlled files are not modified or deleted.
- # - Checks out the WordPress Test reporter repository.
- # - Submit the test results to the WordPress.org host test results.
</del><span class="cx" style="display: block; padding: 0 10px"> test-php:
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- name: ${{ matrix.php }}${{ matrix.multisite && ' multisite' || '' }}${{ matrix.split_slow && ' slow tests' || '' }}${{ matrix.memcached && ' with memcached' || '' }} on ${{ matrix.os }}
- runs-on: ${{ matrix.os }}
- timeout-minutes: 20
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ name: ${{ matrix.php }}${{ matrix.multisite && ' multisite' || '' }}${{ matrix.memcached && ' with memcached' || '' }} on ${{ matrix.os }}
+ uses: WordPress/wordpress-develop/.github/workflows/reusable-phpunit-tests.yml@trunk
+ permissions:
+ contents: read
+ secrets: inherit
</ins><span class="cx" style="display: block; padding: 0 10px"> if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
</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><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ os: [ ubuntu-latest ]
</ins><span class="cx" style="display: block; padding: 0 10px"> php: [ '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1' ]
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- os: [ ubuntu-latest ]
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ db-type: [ 'mysql' ]
+ db-version: [ '5.7' ]
+ multisite: [ false, true ]
</ins><span class="cx" style="display: block; padding: 0 10px"> memcached: [ false ]
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- split_slow: [ false ]
- multisite: [ false, true ]
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> include:
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- # Additional "slow" jobs for PHP 5.6.
- - php: '5.6'
- os: ubuntu-latest
- memcached: false
- multisite: false
- split_slow: true
- - php: '5.6'
- os: ubuntu-latest
- memcached: false
- multisite: true
- split_slow: true
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ # Allow PHP 8.1 tests to have errors.
+ - php: '8.1'
+ allow-errors: true
</ins><span class="cx" style="display: block; padding: 0 10px"> # Include jobs for PHP 7.4 with memcached.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- - php: '7.4'
- os: ubuntu-latest
- memcached: true
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ - os: ubuntu-latest
+ php: '7.4'
+ db-type: 'mysql'
+ db-version: '5.7'
</ins><span class="cx" style="display: block; padding: 0 10px"> multisite: false
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- - php: '7.4'
- os: ubuntu-latest
</del><span class="cx" style="display: block; padding: 0 10px"> memcached: true
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ - os: ubuntu-latest
+ php: '7.4'
+ db-type: 'mysql'
+ db-version: '5.7'
</ins><span class="cx" style="display: block; padding: 0 10px"> multisite: true
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ memcached: true
</ins><span class="cx" style="display: block; padding: 0 10px"> # Report the results of the PHP 7.4 without memcached job.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- - php: '7.4'
- os: ubuntu-latest
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ - os: ubuntu-latest
+ php: '7.4'
+ db-type: 'mysql'
+ db-version: '5.7'
+ multisite: false
</ins><span class="cx" style="display: block; padding: 0 10px"> memcached: false
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- multisite: false
</del><span class="cx" style="display: block; padding: 0 10px"> report: true
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ with:
+ os: ${{ matrix.os }}
+ php: ${{ matrix.php }}
+ db-type: ${{ matrix.db-type }}
+ db-version: ${{ matrix.db-version }}
+ multisite: ${{ matrix.multisite }}
+ memcached: ${{ matrix.memcached }}
+ phpunit-config: ${{ matrix.multisite && 'tests/phpunit/multisite.xml' || 'phpunit.xml.dist' }}
+ report: ${{ matrix.report || false }}
+ allow-errors: ${{ matrix.allow-errors || false }}
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- env:
- LOCAL_PHP: ${{ matrix.php }}-fpm
- LOCAL_PHP_MEMCACHED: ${{ matrix.memcached }}
- PHPUNIT_CONFIG: ${{ matrix.multisite && 'tests/phpunit/multisite.xml' || 'phpunit.xml.dist' }}
-
- steps:
- - name: Configure environment variables
- run: |
- echo "PHP_FPM_UID=$(id -u)" >> $GITHUB_ENV
- echo "PHP_FPM_GID=$(id -g)" >> $GITHUB_ENV
-
- - name: Checkout repository
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
-
- - name: Set up Node.js
- uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
- with:
- node-version-file: '.nvmrc'
- cache: npm
-
- ##
- # This allows Composer dependencies to be installed using a single step.
- #
- # Since the tests are currently run within the Docker containers where the PHP version varies,
- # the same PHP version needs to be configured for the action runner machine so that the correct
- # dependency versions are installed and cached.
- ##
- - name: Set up PHP
- uses: shivammathur/setup-php@d30ad8b1843ace22e6698ab99bbafaa747b6bd0d # v2.24.0
- with:
- php-version: '${{ matrix.php }}'
- coverage: none
-
- # Since Composer dependencies are installed using `composer update` and no lock file is in version control,
- # passing a custom cache suffix ensures that the cache is flushed at least once per week.
- - name: Install Composer dependencies
- uses: ramsey/composer-install@83af392bf5f031813d25e6fe4cd626cdba9a2df6 # v2.2.0
- with:
- custom-cache-suffix: $(/bin/date -u --date='last Mon' "+%F")
-
- - name: Install npm dependencies
- run: npm ci
-
- - name: General debug information
- run: |
- npm --version
- node --version
- curl --version
- git --version
- svn --version
- composer --version
- locale -a
-
- - name: Docker debug information
- run: |
- docker -v
- docker-compose -v
-
- - name: Start Docker environment
- run: |
- npm run env:start
-
- - name: Log running Docker containers
- run: docker ps -a
-
- - name: WordPress Docker container debug information
- run: |
- docker-compose run --rm mysql mysql --version
- docker-compose run --rm php php --version
- docker-compose run --rm php php -m
- docker-compose run --rm php php -i
- docker-compose run --rm php locale -a
-
- - name: Install WordPress
- run: npm run env:install
-
- - name: Run slow PHPUnit tests
- if: ${{ matrix.split_slow }}
- run: node ./tools/local-env/scripts/docker.js run php ./vendor/bin/phpunit --verbose -c ${{ env.PHPUNIT_CONFIG }} --group ${{ env.SLOW_TESTS }}
-
- - name: Run PHPUnit tests for single site excluding slow tests
- if: ${{ matrix.php < '7.0' && ! matrix.split_slow && ! matrix.multisite }}
- run: node ./tools/local-env/scripts/docker.js run php ./vendor/bin/phpunit --verbose -c ${{ env.PHPUNIT_CONFIG }} --exclude-group ${{ env.SLOW_TESTS }},ajax,ms-files,ms-required
-
- - name: Run PHPUnit tests for Multisite excluding slow tests
- if: ${{ matrix.php < '7.0' && ! matrix.split_slow && matrix.multisite }}
- run: node ./tools/local-env/scripts/docker.js run php ./vendor/bin/phpunit --verbose -c ${{ env.PHPUNIT_CONFIG }} --exclude-group ${{ env.SLOW_TESTS }},ajax,ms-files,ms-excluded,oembed-headers
-
- - name: Run PHPUnit tests
- if: ${{ matrix.php >= '7.0' }}
- continue-on-error: ${{ matrix.php == '8.1' }}
- run: node ./tools/local-env/scripts/docker.js run php ./vendor/bin/phpunit --verbose -c ${{ env.PHPUNIT_CONFIG }}
-
- - name: Run AJAX tests
- if: ${{ ! matrix.split_slow }}
- continue-on-error: ${{ matrix.php == '8.1' }}
- run: node ./tools/local-env/scripts/docker.js run php ./vendor/bin/phpunit --verbose -c ${{ env.PHPUNIT_CONFIG }} --group ajax
-
- - name: Run ms-files tests as a multisite install
- if: ${{ matrix.multisite && ! matrix.split_slow }}
- continue-on-error: ${{ matrix.php == '8.1' }}
- run: node ./tools/local-env/scripts/docker.js run php ./vendor/bin/phpunit --verbose -c tests/phpunit/multisite.xml --group ms-files
-
- - name: Run external HTTP tests
- if: ${{ ! matrix.multisite && ! matrix.split_slow }}
- continue-on-error: ${{ matrix.php == '8.1' }}
- run: node ./tools/local-env/scripts/docker.js run php ./vendor/bin/phpunit --verbose -c phpunit.xml.dist --group external-http
-
- # __fakegroup__ is excluded to force PHPUnit to ignore the <exclude> settings in phpunit.xml.dist.
- - name: Run (xDebug) tests
- if: ${{ ! matrix.split_slow }}
- continue-on-error: ${{ matrix.php == '8.1' }}
- run: LOCAL_PHP_XDEBUG=true node ./tools/local-env/scripts/docker.js run php ./vendor/bin/phpunit -v --group xdebug --exclude-group __fakegroup__
-
- - name: Ensure version-controlled files are not modified or deleted
- run: git diff --exit-code
-
- - name: Checkout the WordPress Test Reporter
- if: ${{ github.repository == 'WordPress/wordpress-develop' && github.ref == 'refs/heads/trunk' && matrix.report }}
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
- with:
- repository: 'WordPress/phpunit-test-runner'
- path: 'test-runner'
-
- - name: Submit test results to the WordPress.org host test results
- if: ${{ github.repository == 'WordPress/wordpress-develop' && github.ref == 'refs/heads/trunk' && matrix.report }}
- env:
- WPT_REPORT_API_KEY: "${{ secrets.WPT_REPORT_API_KEY }}"
- run: docker-compose run --rm -e WPT_REPORT_API_KEY -e WPT_PREPARE_DIR=/var/www -e WPT_TEST_DIR=/var/www php php test-runner/report.php
-
</del><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: WordPress/wordpress-develop/.github/workflows/slack-notifications.yml@trunk
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ permissions:
+ actions: read
+ contents: read
</ins><span class="cx" style="display: block; padding: 0 10px"> needs: [ test-php ]
</span><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="lines" style="display: block; padding: 0 10px; color: #888">@@ -241,6 +107,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> failed-workflow:
</span><span class="cx" style="display: block; padding: 0 10px"> name: Failed workflow tasks
</span><span class="cx" style="display: block; padding: 0 10px"> runs-on: ubuntu-latest
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ permissions:
+ actions: write
</ins><span class="cx" style="display: block; padding: 0 10px"> needs: [ test-php, slack-notifications ]
</span><span class="cx" style="display: block; padding: 0 10px"> if: |
</span><span class="cx" style="display: block; padding: 0 10px"> always() &&
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -253,7 +121,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> steps:
</span><span class="cx" style="display: block; padding: 0 10px"> - name: Dispatch workflow run
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975 # v6.4.0
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
</ins><span class="cx" style="display: block; padding: 0 10px"> with:
</span><span class="cx" style="display: block; padding: 0 10px"> retries: 2
</span><span class="cx" style="display: block; padding: 0 10px"> retry-exempt-status-codes: 418
</span></span></pre></div>
<a id="branches60githubworkflowstestbuildprocessesymlfromrev58356branches60githubworkflowstestnpmyml"></a>
<div class="copfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Copied: branches/6.0/.github/workflows/test-build-processes.yml (from rev 58356, branches/6.0/.github/workflows/test-npm.yml)</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/6.0/.github/workflows/test-build-processes.yml (rev 0)
+++ branches/6.0/.github/workflows/test-build-processes.yml 2024-06-06 15:27:31 UTC (rev 58357)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,135 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+name: Test Build Processes
+
+on:
+ push:
+ branches:
+ - trunk
+ - '3.[7-9]'
+ - '[4-9].[0-9]'
+ tags:
+ - '[0-9]+.[0-9]'
+ - '[0-9]+.[0-9].[0-9]+'
+ pull_request:
+ branches:
+ - trunk
+ - '3.[7-9]'
+ - '[4-9].[0-9]'
+ paths:
+ # These files configure npm. Changes could affect the outcome.
+ - 'package*.json'
+ # JavaScript files are built using npm.
+ - '**.js'
+ # CSS and SCSS files are built using npm.
+ - '**.scss'
+ - '**.css'
+ # Changes to workflow files should always verify all workflows are successful.
+ - '.github/workflows/**.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:
+ # Tests the WordPress Core build process on multiple operating systems.
+ test-core-build-process:
+ name: Core running from ${{ matrix.directory }}
+ uses: WordPress/wordpress-develop/.github/workflows/reusable-test-core-build-process.yml@trunk
+ permissions:
+ contents: read
+ if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [ ubuntu-latest, windows-latest ]
+ directory: [ 'src', 'build' ]
+ include:
+ # Only prepare artifacts once.
+ - os: ubuntu-latest
+ directory: 'build'
+ prepare-playground: true
+ with:
+ os: ${{ matrix.os }}
+ directory: ${{ matrix.directory }}
+ prepare-playground: ${{ matrix.prepare-playground && matrix.prepare-playground || false }}
+ test-emoji: false
+
+ # Tests the WordPress Core build process on MacOS.
+ #
+ # 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.
+ #
+ # The `matrix` and `runner` contexts are not available for use within `if` expressions. So there is
+ # currently no way to determine the OS being used on a given job.
+ # See https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability.
+ test-core-build-process-macos:
+ name: Core running from ${{ matrix.directory }}
+ uses: WordPress/wordpress-develop/.github/workflows/reusable-test-core-build-process.yml@trunk
+ permissions:
+ contents: read
+ if: ${{ github.repository == 'WordPress/wordpress-develop' }}
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [ macos-13 ]
+ directory: [ 'src', 'build' ]
+ with:
+ os: ${{ matrix.os }}
+ directory: ${{ matrix.directory }}
+ test-emoji: false
+
+ slack-notifications:
+ name: Slack Notifications
+ uses: WordPress/wordpress-develop/.github/workflows/slack-notifications.yml@trunk
+ permissions:
+ actions: read
+ contents: read
+ needs: [ test-core-build-process, test-core-build-process-macos ]
+ 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-latest
+ 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: '${{ github.run_id }}'
+ }
+ });
</ins></span></pre></div>
<a id="branches60githubworkflowstestnpmyml"></a>
<div class="delfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Deleted: branches/6.0/.github/workflows/test-npm.yml</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/6.0/.github/workflows/test-npm.yml 2024-06-06 14:34:58 UTC (rev 58356)
+++ branches/6.0/.github/workflows/test-npm.yml 2024-06-06 15:27:31 UTC (rev 58357)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,208 +0,0 @@
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-name: Test npm
-
-on:
- push:
- branches:
- - trunk
- - '3.[7-9]'
- - '[4-9].[0-9]'
- tags:
- - '[0-9]+.[0-9]'
- - '[0-9]+.[0-9].[0-9]+'
- pull_request:
- branches:
- - trunk
- - '3.[7-9]'
- - '[4-9].[0-9]'
- paths:
- # These files configure npm. Changes could affect the outcome.
- - 'package*.json'
- # JavaScript files are built using npm.
- - '**.js'
- # CSS and SCSS files are built using npm.
- - '**.scss'
- - '**.css'
- # Changes to workflow files should always verify all workflows are successful.
- - '.github/workflows/**.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
-
-env:
- PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: ${{ true }}
-
-jobs:
- # Verifies that installing npm dependencies and building WordPress works as expected.
- #
- # Performs the following steps:
- # - Checks out the repository.
- # - Sets up Node.js.
- # - Logs debug information about the GitHub Action runner.
- # - Installs npm dependencies.
- # - Builds WordPress to run from the `build` directory.
- # - Cleans up after building WordPress to the `build` directory.
- # - Ensures version-controlled files are not modified or deleted.
- # - Builds WordPress to run from the `src` directory.
- # - Cleans up after building WordPress to the `src` directory.
- # - Ensures version-controlled files are not modified or deleted.
- test-npm:
- name: Test npm on ${{ matrix.os }}
- runs-on: ${{ matrix.os }}
- timeout-minutes: 20
- if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
- strategy:
- fail-fast: false
- matrix:
- os: [ ubuntu-latest, windows-latest ]
-
- steps:
- - name: Checkout repository
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
-
- - name: Set up Node.js
- uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
- with:
- node-version-file: '.nvmrc'
- cache: npm
-
- - name: Log debug information
- run: |
- npm --version
- node --version
- curl --version
- git --version
- svn --version
-
- - name: Install npm Dependencies
- run: npm ci
-
- - name: Build WordPress in /src
- run: npm run build:dev
-
- - name: Clean after building in /src
- run: npm run grunt clean -- --dev
-
- - name: Ensure version-controlled files are not modified or deleted during building and cleaning
- run: git diff --exit-code
-
- - name: Build WordPress
- run: npm run build
-
- - name: Clean after building
- run: npm run grunt clean
-
- - name: Ensure version-controlled files are not modified or deleted during building and cleaning
- run: git diff --exit-code
-
- # Verifies that installing npm dependencies and building WordPress works as expected on MacOS.
- #
- # This is separate from the job above in order to use stricter conditions about when to run.
- # This avoids unintentionally consuming excessive minutes, as MacOS jobs consume minutes at a 10x rate.
- #
- # The `matrix` and `runner` contexts are not available for use within `if` expressions. So there is
- # currently no way to determine the OS being used on a given job.
- # See https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability.
- #
- # Performs the following steps:
- # - Checks out the repository.
- # - Sets up Node.js.
- # - Logs debug information about the GitHub Action runner.
- # - Installs npm dependencies.
- # - Builds WordPress to run from the `build` directory.
- # - Cleans up after building WordPress to the `build` directory.
- # - Ensures version-controlled files are not modified or deleted.
- # - Builds WordPress to run from the `src` directory.
- # - Cleans up after building WordPress to the `src` directory.
- # - Ensures version-controlled files are not modified or deleted.
- test-npm-macos:
- name: Test npm on MacOS
- runs-on: macos-latest
- timeout-minutes: 30
- if: ${{ github.repository == 'WordPress/wordpress-develop' }}
- steps:
- - name: Checkout repository
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
-
- - name: Set up Node.js
- uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
- with:
- node-version-file: '.nvmrc'
- cache: npm
-
- - name: Log debug information
- run: |
- npm --version
- node --version
- curl --version
- git --version
- svn --version
-
- - name: Install npm Dependencies
- run: npm ci
-
- - name: Build WordPress in /src
- run: npm run build:dev
-
- - name: Clean after building in /src
- run: npm run grunt clean -- --dev
-
- - name: Ensure version-controlled files are not modified or deleted during building and cleaning
- run: git diff --exit-code
-
- - name: Build WordPress
- run: npm run build
-
- - name: Clean after building
- run: npm run grunt clean
-
- - name: Ensure version-controlled files are not modified or deleted during building and cleaning
- run: git diff --exit-code
-
- slack-notifications:
- name: Slack Notifications
- uses: WordPress/wordpress-develop/.github/workflows/slack-notifications.yml@trunk
- needs: [ test-npm, test-npm-macos ]
- if: ${{ github.repository == 'WordPress/wordpress-develop' && github.event_name != 'pull_request' && always() }}
- with:
- calling_status: ${{ needs.test-npm.result == 'success' && needs.test-npm-macos.result == 'success' && 'success' || ( needs.test-npm.result == 'cancelled' || needs.test-npm-macos.result == 'cancelled' ) && 'cancelled' || 'failure' }}
- 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-latest
- needs: [ test-npm, test-npm-macos, slack-notifications ]
- if: |
- always() &&
- github.repository == 'WordPress/wordpress-develop' &&
- github.event_name != 'pull_request' &&
- github.run_attempt < 2 &&
- (
- needs.test-npm.result == 'cancelled' || needs.test-npm.result == 'failure' ||
- needs.test-npm-macos.result == 'cancelled' || needs.test-npm-macos.result == 'failure'
- )
-
- steps:
- - name: Dispatch workflow run
- uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975 # v6.4.0
- 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: '${{ github.run_id }}'
- }
- });
</del></span></pre></div>
<a id="branches60dockercomposeyml"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/6.0/docker-compose.yml</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/6.0/docker-compose.yml 2024-06-06 14:34:58 UTC (rev 58356)
+++ branches/6.0/docker-compose.yml 2024-06-06 15:27:31 UTC (rev 58357)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,3 @@
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-version: '3.7'
-
</del><span class="cx" style="display: block; padding: 0 10px"> services:
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> ##
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -25,7 +23,10 @@
</span><span class="cx" style="display: block; padding: 0 10px"> command: /bin/sh -c "envsubst '$$LOCAL_DIR' < /etc/nginx/conf.d/default.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'"
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> depends_on:
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- - php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ php:
+ condition: service_started
+ mysql:
+ condition: service_healthy
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> ##
</span><span class="cx" style="display: block; padding: 0 10px"> # The PHP container.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -38,6 +39,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> environment:
</span><span class="cx" style="display: block; padding: 0 10px"> - LOCAL_PHP_XDEBUG=${LOCAL_PHP_XDEBUG-false}
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ - XDEBUG_MODE=${LOCAL_PHP_XDEBUG_MODE-develop,debug}
</ins><span class="cx" style="display: block; padding: 0 10px"> - LOCAL_PHP_MEMCACHED=${LOCAL_PHP_MEMCACHED-false}
</span><span class="cx" style="display: block; padding: 0 10px"> - PHP_FPM_UID=${PHP_FPM_UID-1000}
</span><span class="cx" style="display: block; padding: 0 10px"> - PHP_FPM_GID=${PHP_FPM_GID-1000}
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -51,9 +53,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> # Copy or delete the Memcached dropin plugin file as appropriate.
</span><span class="cx" style="display: block; padding: 0 10px"> command: /bin/sh -c "if [ $LOCAL_PHP_MEMCACHED = true ]; then cp -n /var/www/tests/phpunit/includes/object-cache.php /var/www/src/wp-content/object-cache.php; else rm -f /var/www/src/wp-content/object-cache.php; fi && exec php-fpm"
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- depends_on:
- - mysql
-
</del><span class="cx" style="display: block; padding: 0 10px"> # The init directive ensures the command runs with a PID > 1, so Ctrl+C works correctly.
</span><span class="cx" style="display: block; padding: 0 10px"> init: true
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -64,7 +63,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> # The MySQL container.
</span><span class="cx" style="display: block; padding: 0 10px"> ##
</span><span class="cx" style="display: block; padding: 0 10px"> mysql:
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- image: amd64/${LOCAL_DB_TYPE-mysql}:${LOCAL_DB_VERSION-latest}
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ image: ${LOCAL_DB_TYPE-mysql}:${LOCAL_DB_VERSION-latest}
+ platform: linux/amd64
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> networks:
</span><span class="cx" style="display: block; padding: 0 10px"> - wpdevnet
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -82,6 +82,12 @@
</span><span class="cx" style="display: block; padding: 0 10px"> # For compatibility with PHP versions that don't support the caching_sha2_password auth plugin used in MySQL 8.0.
</span><span class="cx" style="display: block; padding: 0 10px"> command: --default-authentication-plugin=mysql_native_password
</span><span class="cx" style="display: block; padding: 0 10px">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ healthcheck:
+ test: [ "CMD-SHELL", "if [ \"$LOCAL_DB_TYPE\" = \"mariadb\" ]; then mariadb-admin ping -h localhost; else mysqladmin ping -h localhost; fi" ]
+ timeout: 5s
+ interval: 5s
+ retries: 10
+
</ins><span class="cx" style="display: block; padding: 0 10px"> ##
</span><span class="cx" style="display: block; padding: 0 10px"> # The WP CLI container.
</span><span class="cx" style="display: block; padding: 0 10px"> ##
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -106,6 +112,12 @@
</span><span class="cx" style="display: block; padding: 0 10px"> extra_hosts:
</span><span class="cx" style="display: block; padding: 0 10px"> - localhost:host-gateway
</span><span class="cx" style="display: block; padding: 0 10px">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ depends_on:
+ php:
+ condition: service_started
+ mysql:
+ condition: service_healthy
+
</ins><span class="cx" style="display: block; padding: 0 10px"> ##
</span><span class="cx" style="display: block; padding: 0 10px"> # The Memcached container.
</span><span class="cx" style="display: block; padding: 0 10px"> ##
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -118,6 +130,10 @@
</span><span class="cx" style="display: block; padding: 0 10px"> ports:
</span><span class="cx" style="display: block; padding: 0 10px"> - 11211:11211
</span><span class="cx" style="display: block; padding: 0 10px">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ depends_on:
+ php:
+ condition: service_started
+
</ins><span class="cx" style="display: block; padding: 0 10px"> volumes:
</span><span class="cx" style="display: block; padding: 0 10px"> # So that sites aren't wiped every time containers are restarted, MySQL uses a persistent volume.
</span><span class="cx" style="display: block; padding: 0 10px"> mysql: {}
</span></span></pre></div>
<a id="branches60toolslocalenvscriptsdockerjs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/6.0/tools/local-env/scripts/docker.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/6.0/tools/local-env/scripts/docker.js 2024-06-06 14:34:58 UTC (rev 58356)
+++ branches/6.0/tools/local-env/scripts/docker.js 2024-06-06 15:27:31 UTC (rev 58357)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4,5 +4,5 @@
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> dotenvExpand.expand( dotenv.config() );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-// Execute any docker-compose command passed to this script.
-execSync( 'docker-compose ' + process.argv.slice( 2 ).join( ' ' ), { stdio: 'inherit' } );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+// Execute any docker compose command passed to this script.
+execSync( 'docker compose ' + process.argv.slice( 2 ).join( ' ' ), { stdio: 'inherit' } );
</ins></span></pre></div>
<a id="branches60toolslocalenvscriptsinstalljs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/6.0/tools/local-env/scripts/install.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/6.0/tools/local-env/scripts/install.js 2024-06-06 14:34:58 UTC (rev 58356)
+++ branches/6.0/tools/local-env/scripts/install.js 2024-06-06 15:27:31 UTC (rev 58357)
</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"> * @param {string} cmd The WP-CLI command to run.
</span><span class="cx" style="display: block; padding: 0 10px"> */
</span><span class="cx" style="display: block; padding: 0 10px"> function wp_cli( cmd ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- execSync( `docker-compose run --rm cli ${cmd}`, { stdio: 'inherit' } );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ execSync( `docker compose run --rm cli ${cmd}`, { stdio: 'inherit' } );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -54,6 +54,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> function install_wp_importer() {
</span><span class="cx" style="display: block; padding: 0 10px"> const testPluginDirectory = 'tests/phpunit/data/plugins/wordpress-importer';
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- execSync( `docker-compose exec -T php rm -rf ${testPluginDirectory}`, { stdio: 'inherit' } );
- execSync( `docker-compose exec -T php git clone https://github.com/WordPress/wordpress-importer.git ${testPluginDirectory} --depth=1`, { stdio: 'inherit' } );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ execSync( `docker compose exec -T php rm -rf ${testPluginDirectory}`, { stdio: 'inherit' } );
+ execSync( `docker compose exec -T php git clone https://github.com/WordPress/wordpress-importer.git ${testPluginDirectory} --depth=1`, { stdio: 'inherit' } );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span></span></pre></div>
<a id="branches60toolslocalenvscriptsstartjs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/6.0/tools/local-env/scripts/start.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/6.0/tools/local-env/scripts/start.js 2024-06-06 14:34:58 UTC (rev 58356)
+++ branches/6.0/tools/local-env/scripts/start.js 2024-06-06 15:27:31 UTC (rev 58357)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8,7 +8,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> const containers = ( process.env.LOCAL_PHP_MEMCACHED === 'true' )
</span><span class="cx" style="display: block; padding: 0 10px"> ? 'wordpress-develop memcached'
</span><span class="cx" style="display: block; padding: 0 10px"> : 'wordpress-develop';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-execSync( `docker-compose up -d -- ${containers}`, { stdio: 'inherit' } );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+execSync( `docker compose up -d -- ${containers}`, { stdio: 'inherit' } );
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> // If Docker Toolbox is being used, we need to manually forward LOCAL_PORT to the Docker VM.
</span><span class="cx" style="display: block; padding: 0 10px"> if ( process.env.DOCKER_TOOLBOX_INSTALL_PATH ) {
</span></span></pre>
</div>
</div>
</body>
</html>