Build/Test Tools: Backport GitHub Action and build improvements to the 5.1 branch.

This backports several build and test tool improvements to the 5.1 branch. Most notably, this includes:

- The changes required to allow each workflow to be triggered by the `workflow_dispatch` event so that tests can be run on a schedule [50590].
- Splitting single site and multisite tests into parallel jobs [50379].
- Split slow tests into separate, parallel jobs for PHP <= 5.6 [50444].
- Better branch and path scoping for GitHub Action workflows when running on `pull_request` [50432,50479].
- Several `devDependency` updates.

Merges [45317,50267,50379,50387,50413,50416,50432,50435-50436,50444,50446,50473-50474,50476,50479,50485-50487,50545,50579,50590,50598] to the 5.1 branch.
See #50401, #51801, #51802, #52548, #52608, #52612, #52624, #52625, #52645, #52653, #52658, #52660, #52667.

git-svn-id: https://develop.svn.wordpress.org/branches/5.1@50622 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Jonathan Desrosiers 2021-03-31 19:20:38 +00:00
parent 56153093a1
commit b790f152dd
11 changed files with 538 additions and 127 deletions

View File

@ -1,17 +1,38 @@
name: Coding Standards
on:
# JSHint was introduced in WordPress 3.8.
# PHPCS checking was introduced in WordPress 5.1.
push:
branches:
- master
# JSHint was introduced in WordPress 3.8.
# PHPCS checking was introduced in WordPress 5.1.
- trunk
- '3.[89]'
- '[4-9].[0-9]'
tags:
- '3.[89]*'
- '[4-9].[0-9]*'
pull_request:
branches:
- master
- trunk
- '3.[89]'
- '[4-9].[0-9]'
paths:
# Any change to a PHP or JavaScript file should run checks.
- '**.js'
- '**.php'
# These files configure NPM. Changes could affect the outcome.
- 'package*.json'
# These files configure Composer. Changes could affect the outcome.
- 'composer.*'
# This file configures JSHint. Changes could affect the outcome.
- '.jshintrc'
# This file configures PHPCS. Changes could affect the outcome.
- 'phpcs.xml.dist'
# Changes to workflow files should always verify all workflows are successful.
- '.github/workflows/*.yml'
workflow_dispatch:
jobs:
# Runs PHP coding standards checks.
@ -35,10 +56,10 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4
- name: Set up PHP
uses: shivammathur/setup-php@v2
uses: shivammathur/setup-php@afefcaf556d98dc7896cca380e181decb609ca44 # v2.10.0
with:
php-version: '7.2'
coverage: none
@ -50,7 +71,7 @@ jobs:
composer --version
- name: Install Composer dependencies
uses: ramsey/composer-install@v1
uses: ramsey/composer-install@92a7904348d4ad30236f3611e33b7f0c6f9edd70 # v1.1.0
with:
composer-options: "--no-progress --no-ansi --no-interaction"
@ -85,7 +106,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4
- name: Log debug information
run: |
@ -95,20 +116,18 @@ jobs:
svn --version
- name: Install NodeJS
uses: actions/setup-node@v1
uses: actions/setup-node@46071b5c7a2e0c34e49c3cb8a0e792e86e18d5ea # v2.1.5
with:
node-version: 14
- name: Cache NodeJS modules
uses: actions/cache@v2
uses: actions/cache@26968a09c0ea4f3e233fdddbafd1166051a095f6 # v2.1.4
env:
cache-name: cache-node-modules
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: ~/.npm
key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-npm-
- name: Log debug information
run: |
@ -116,7 +135,7 @@ jobs:
node --version
- name: Install Dependencies
run: npx install-changed --install-command="npm ci"
run: npm ci
- name: Run JSHint
run: npm run grunt jshint

View File

@ -1,16 +1,23 @@
name: End-to-end Tests
on:
# The end to end test suite was introduced in WordPress 5.3.
push:
branches:
- master
# The end to end test suite was introduced in WordPress 5.3.
- trunk
- '5.[3-9]'
- '[6-9].[0-9]'
tags:
- '5.[3-9]*'
- '[6-9].[0-9]*'
pull_request:
branches:
- master
- trunk
- '5.[3-9]'
- '[6-9].[0-9]'
workflow_dispatch:
env:
LOCAL_DIR: build
@ -42,9 +49,7 @@ jobs:
steps:
- name: Cancel previous runs of this workflow (pull requests only)
if: ${{ github.event_name == 'pull_request' }}
uses: styfle/cancel-workflow-action@0.5.0
with:
access_token: ${{ github.token }}
uses: styfle/cancel-workflow-action@3d86a7cc43670094ac248017207be0295edbc31d # v0.8.0
- name: Configure environment variables
run: |
@ -52,7 +57,7 @@ jobs:
echo "PHP_FPM_GID=$(id -g)" >> $GITHUB_ENV
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4
- name: Log debug information
run: |
@ -66,23 +71,21 @@ jobs:
locale -a
- name: Install NodeJS
uses: actions/setup-node@v1
uses: actions/setup-node@46071b5c7a2e0c34e49c3cb8a0e792e86e18d5ea # v2.1.5
with:
node-version: 14
- name: Cache NodeJS modules
uses: actions/cache@v2
uses: actions/cache@26968a09c0ea4f3e233fdddbafd1166051a095f6 # v2.1.4
env:
cache-name: cache-node-modules
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: ~/.npm
key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-npm-
- name: Install Dependencies
run: npx install-changed --install-command="npm ci"
run: npm ci
- name: Build WordPress
run: npm run build

View File

@ -1,16 +1,36 @@
name: JavaScript Tests
on:
# JavaScript testing was introduced in WordPress 3.8.
push:
branches:
- master
# JavaScript testing was introduced in WordPress 3.8.
- trunk
- '3.[89]'
- '[4-9].[0-9]'
tags:
- '3.[89]*'
- '[4-9].[0-9]*'
pull_request:
branches:
- master
- trunk
- '3.[89]'
- '[4-9].[0-9]'
paths:
# Any change to a JavaScript file should run tests.
- '**.js'
# These files configure NPM. Changes could affect the outcome.
- 'package*.json'
# This file configures ESLint. Changes could affect the outcome.
- '.eslintignore'
# This file configures JSHint. Changes could affect the outcome.
- '.jshintrc'
# Any change to the QUnit directory should run tests.
- 'tests/qunit/**'
# Changes to workflow files should always verify all workflows are successful.
- '.github/workflows/*.yml'
workflow_dispatch:
jobs:
# Runs the QUnit tests for WordPress.
@ -33,12 +53,10 @@ jobs:
steps:
- name: Cancel previous runs of this workflow (pull requests only)
if: ${{ github.event_name == 'pull_request' }}
uses: styfle/cancel-workflow-action@0.5.0
with:
access_token: ${{ github.token }}
uses: styfle/cancel-workflow-action@3d86a7cc43670094ac248017207be0295edbc31d # v0.8.0
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4
- name: Log debug information
run: |
@ -48,20 +66,18 @@ jobs:
svn --version
- name: Install NodeJS
uses: actions/setup-node@v1
uses: actions/setup-node@46071b5c7a2e0c34e49c3cb8a0e792e86e18d5ea # v2.1.5
with:
node-version: 14
- name: Cache NodeJS modules
uses: actions/cache@v2
uses: actions/cache@26968a09c0ea4f3e233fdddbafd1166051a095f6 # v2.1.4
env:
cache-name: cache-node-modules
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: ~/.npm
key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-npm-
- name: Log debug information
run: |
@ -69,7 +85,7 @@ jobs:
node --version
- name: Install Dependencies
run: npx install-changed --install-command="npm ci"
run: npm ci
- name: Run QUnit tests
run: npm run grunt qunit:compiled

View File

@ -1,16 +1,32 @@
name: PHP Compatibility
on:
# PHP compatibility testing was introduced in WordPress 5.5.
push:
branches:
- master
# The PHP compatibility testing was introduced in WordPress 5.5.
- trunk
- '5.[5-9]'
- '[6-9].[0-9]'
tags:
- '5.[5-9]*'
- '[6-9].[0-9]*'
pull_request:
branches:
- master
- trunk
- '5.[5-9]'
- '[6-9].[0-9]'
paths:
# This workflow only scans PHP files.
- '**.php'
# These files configure Composer. Changes could affect the outcome.
- 'composer.*'
# This file configures PHP Compatibility scanning. Changes could affect the outcome.
- 'phpcompat.xml.dist'
# Changes to workflow files should always verify all workflows are successful.
- '.github/workflows/*.yml'
workflow_dispatch:
jobs:
@ -34,10 +50,10 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4
- name: Set up PHP
uses: shivammathur/setup-php@v2
uses: shivammathur/setup-php@afefcaf556d98dc7896cca380e181decb609ca44 # v2.10.0
with:
php-version: '7.4'
coverage: none
@ -49,7 +65,7 @@ jobs:
composer --version
- name: Install Composer dependencies
uses: ramsey/composer-install@v1
uses: ramsey/composer-install@92a7904348d4ad30236f3611e33b7f0c6f9edd70 # v1.1.0
with:
composer-options: "--no-progress --no-ansi --no-interaction"

View File

@ -4,12 +4,19 @@ on:
push:
branches:
- master
- trunk
- '3.[7-9]'
- '[4-9].[0-9]'
tags:
- '3.[7-9]*'
- '[4-9].[0-9]*'
pull_request:
branches:
- master
- trunk
- '3.[7-9]'
- '[4-9].[0-9]'
workflow_dispatch:
# Once weekly On Sundays at 00:00 UTC.
schedule:
- cron: '0 0 * * 0'
@ -21,6 +28,7 @@ env:
# Controls which NPM script to use for running PHPUnit tests. Options ar `php` and `php-composer`.
PHPUNIT_SCRIPT: php
LOCAL_PHP_MEMCACHED: ${{ false }}
SLOW_TESTS: 'external-http,media,restapi'
jobs:
# Sets up WordPress for testing or development use.
@ -43,12 +51,10 @@ jobs:
steps:
- name: Cancel previous runs of this workflow (pull requests only)
if: ${{ github.event_name == 'pull_request' }}
uses: styfle/cancel-workflow-action@0.5.0
with:
access_token: ${{ github.token }}
uses: styfle/cancel-workflow-action@3d86a7cc43670094ac248017207be0295edbc31d # v0.8.0
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4
- name: Log debug information
run: |
@ -64,35 +70,33 @@ jobs:
locale -a
- name: Install NodeJS
uses: actions/setup-node@v1
uses: actions/setup-node@46071b5c7a2e0c34e49c3cb8a0e792e86e18d5ea # v2.1.5
with:
node-version: 14
- name: Cache NodeJS modules
uses: actions/cache@v2
uses: actions/cache@26968a09c0ea4f3e233fdddbafd1166051a095f6 # v2.1.4
env:
cache-name: cache-node-modules
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: ~/.npm
key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-npm-
- name: Install Dependencies
run: npx install-changed --install-command="npm ci"
run: npm ci
- name: Build WordPress
run: npm run build
- name: Create ZIP artifact
uses: thedoctor0/zip-release@0.4.1
uses: thedoctor0/zip-release@a1afcab9c664c9976ac398fa831eac67bed1eb0e # v0.4.1
with:
filename: built-wp-${{ github.sha }}.zip
exclusions: '*.git* /*node_modules/* packagehash.txt'
- name: Upload build artifact
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@e448a9b857ee2131e752b06002bf0e093c65e571 # v2.2.2
with:
name: built-wp-${{ github.sha }}
path: built-wp-${{ github.sha }}.zip
@ -124,53 +128,99 @@ jobs:
# - Submit the test results to the WordPress.org host test results.
# - todo: Configure Slack notifications for failing tests.
test-php:
name: ${{ matrix.php }}${{ matrix.memcached && ' with memcached' || '' }} on ${{ matrix.os }}
name: ${{ matrix.php }}${{ matrix.multisite && ' multisite' || '' }}${{ matrix.split_slow && ' slow tests' || '' }} ${{ matrix.memcached && ' with memcached' || '' }} on ${{ matrix.os }}
needs: setup-wordpress
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
php: [ '7.3' ]
phpunit: [ '7.3' ]
php: [ '5.3', '5.4', '5.5', '7.1', '7.2', '7.3' ]
os: [ ubuntu-latest ]
memcached: [ false ]
split_slow: [ false ]
multisite: [ false, true ]
include:
# Include job for PHP 7.3 with memcached.
# Include jobs for PHP 7.3 with memcached.
- php: '7.3'
phpunit: '7.3'
os: ubuntu-latest
memcached: false
- php: '7.2'
phpunit: '7.2'
memcached: true
split_slow: false
multisite: false
- php: '7.3'
os: ubuntu-latest
memcached: false
- php: '7.1'
phpunit: '7.1'
os: ubuntu-latest
memcached: false
memcached: true
split_slow: false
multisite: true
# Include jobs when specific PHPUnit versions are required.
- php: '7.0'
phpunit: '6-php-7.0'
os: ubuntu-latest
memcached: false
multisite: false
- php: '7.0'
phpunit: '6-php-7.0'
os: ubuntu-latest
memcached: false
multisite: true
- php: '5.6'
phpunit: '4-php-5.6'
os: ubuntu-latest
memcached: false
multisite: false
- php: '5.6'
phpunit: '4-php-5.6'
os: ubuntu-latest
memcached: false
multisite: true
# Additional "slow" jobs for PHP <= 5.6.
- php: '5.6'
phpunit: '4-php-5.6'
os: ubuntu-latest
memcached: false
split_slow: true
multisite: false
- php: '5.6'
phpunit: '4-php-5.6'
os: ubuntu-latest
memcached: false
split_slow: true
multisite: true
- php: '5.5'
phpunit: '5.5'
os: ubuntu-latest
memcached: false
split_slow: true
multisite: false
- php: '5.5'
os: ubuntu-latest
memcached: false
split_slow: true
multisite: true
- php: '5.4'
phpunit: '5.4'
os: ubuntu-latest
memcached: false
split_slow: true
multisite: false
- php: '5.4'
os: ubuntu-latest
memcached: false
split_slow: true
multisite: true
- php: '5.3'
phpunit: '5.3'
os: ubuntu-latest
memcached: false
split_slow: true
multisite: false
- php: '5.3'
os: ubuntu-latest
memcached: false
split_slow: true
multisite: true
env:
LOCAL_PHP: ${{ matrix.php }}-fpm
LOCAL_PHPUNIT: ${{ matrix.phpunit }}-fpm
LOCAL_PHPUNIT: ${{ matrix.phpunit && matrix.phpunit || matrix.php }}-fpm
LOCAL_PHP_MEMCACHED: ${{ matrix.memcached }}
PHPUNIT_CONFIG: ${{ matrix.multisite && 'tests/phpunit/multisite.xml' || 'phpunit.xml.dist' }}
steps:
- name: Configure environment variables
@ -179,7 +229,7 @@ jobs:
echo "PHP_FPM_GID=$(id -g)" >> $GITHUB_ENV
- name: Download the built WordPress artifact
uses: actions/download-artifact@v2
uses: actions/download-artifact@4a7a711286f30c025902c28b541c10e147a9b843 # v2.0.8
with:
name: built-wp-${{ github.sha }}
@ -187,34 +237,30 @@ jobs:
run: unzip built-wp-${{ github.sha }}.zip
- name: Install NodeJS
uses: actions/setup-node@v1
uses: actions/setup-node@46071b5c7a2e0c34e49c3cb8a0e792e86e18d5ea # v2.1.5
with:
node-version: 14
- name: Use cached Node modules
uses: actions/cache@v2
uses: actions/cache@26968a09c0ea4f3e233fdddbafd1166051a095f6 # v2.1.4
env:
cache-name: cache-node-modules
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: ~/.npm
key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-npm-
- name: Install Dependencies
run: npx install-changed --install-command="npm ci"
run: npm ci
- name: Cache Composer dependencies
if: ${{ env.COMPOSER_INSTALL == true }}
uses: actions/cache@v2
uses: actions/cache@26968a09c0ea4f3e233fdddbafd1166051a095f6 # v2.1.4
env:
cache-name: cache-composer-dependencies
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-php-${{ matrix.php }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-php-${{ matrix.php }}-composer-
- name: Install Composer dependencies
if: ${{ env.COMPOSER_INSTALL == true }}
@ -260,27 +306,37 @@ jobs:
- name: Install WordPress
run: npm run env:install
- name: Run slow PHPUnit tests
if: ${{ matrix.split_slow }}
run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --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: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --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: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c ${{ env.PHPUNIT_CONFIG }} --exclude-group ${{ env.SLOW_TESTS }},ajax,ms-files,ms-excluded,oembed-headers
- name: Run PHPUnit tests
run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c phpunit.xml.dist
if: ${{ matrix.php >= '7.0' }}
run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c ${{ env.PHPUNIT_CONFIG }}
- name: Run AJAX tests
run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c phpunit.xml.dist --group ajax
- name: Run tests as a multisite install
run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c tests/phpunit/multisite.xml
if: ${{ ! matrix.multisite && ! matrix.split_slow }}
run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c ${{ env.PHPUNIT_CONFIG }} --group ajax
- name: Run ms-files tests as a multisite install
if: ${{ matrix.multisite && ! matrix.split_slow }}
run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c tests/phpunit/multisite.xml --group ms-files
- name: Run external HTTP tests
if: ${{ ! matrix.multisite && ! matrix.split_slow }}
run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c phpunit.xml.dist --group external-http
- name: Run REST API tests
run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c phpunit.xml.dist --group restapi-jsclient
- name: Checkout the WordPress Test Reporter
if: ${{ github.repository == 'WordPress/wordpress-develop' && github.ref == 'refs/heads/master' && matrix.report }}
uses: actions/checkout@v2
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4
with:
repository: 'WordPress/phpunit-test-runner'
path: 'test-runner'

175
.github/workflows/test-npm.yml vendored Normal file
View File

@ -0,0 +1,175 @@
name: Test NPM
on:
push:
branches:
- master
- trunk
- '3.[7-9]'
- '[4-9].[0-9]'
pull_request:
branches:
- master
- 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:
env:
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: ${{ true }}
jobs:
# Prepares the workflow.
#
# Performs the following steps:
# - Cancels all previous workflow runs for pull requests that have not completed.
prepare-workflow:
name: Prepare the workflow
runs-on: ubuntu-latest
if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
steps:
- name: Cancel previous runs of this workflow (pull requests only)
if: ${{ github.event_name == 'pull_request' }}
uses: styfle/cancel-workflow-action@3d86a7cc43670094ac248017207be0295edbc31d # v0.8.0
# Verifies that installing NPM dependencies and building WordPress works as expected.
#
# Performs the following steps:
# - Checks out the repository.
# - Logs debug information about the runner container.
# - Installs NodeJS 14.
# - Sets up caching for NPM.
# _ Installs NPM dependencies using install-changed to hash the `package.json` file.
# - Builds WordPress to run from the `build` directory.
# - Cleans up after building WordPress to the `build` directory.
# - Builds WordPress to run from the `src` directory.
# - Cleans up after building WordPress to the `src` directory.
test-npm:
name: Test NPM on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
needs: prepare-workflow
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, windows-latest ]
steps:
- name: Checkout repository
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4
- name: Log debug information
run: |
npm --version
node --version
curl --version
git --version
svn --version
- name: Install NodeJS
uses: actions/setup-node@46071b5c7a2e0c34e49c3cb8a0e792e86e18d5ea # v2.1.5
with:
node-version: 14
- name: Cache NodeJS modules (Ubuntu & MacOS)
uses: actions/cache@26968a09c0ea4f3e233fdddbafd1166051a095f6 # v2.1.4
if: ${{ matrix.os != 'windows-latest' }}
with:
path: ~/.npm
key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
- name: Get NPM cache directory (Windows only)
if: ${{ matrix.os == 'windows-latest' }}
id: npm-cache
run: echo "::set-output name=dir::$(npm config get cache)"
- name: Cache NodeJS modules (Windows only)
uses: actions/cache@26968a09c0ea4f3e233fdddbafd1166051a095f6 # v2.1.4
if: ${{ matrix.os == 'windows-latest' }}
with:
path: ${{ steps.npm-cache.outputs.dir }}
key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
- name: Install Dependencies
run: npm ci
- name: Build WordPress
run: npm run build
- name: Clean after building
run: npm run grunt clean
- name: Build WordPress in /src
run: npm run build:dev
- name: Clean after building in /src
run: npm run grunt clean --dev
# Verifies that installing NPM dependencies and building WordPress works as expected on MacOS.
#
# This is a separate job in order to that more strict conditions can be used.
#
# Performs the following steps:
# - Checks out the repository.
# - Logs debug information about the runner container.
# - Installs NodeJS 14.
# - Sets up caching for NPM.
# _ Installs NPM dependencies using install-changed to hash the `package.json` file.
# - Builds WordPress to run from the `build` directory.
# - Cleans up after building WordPress to the `build` directory.
# - Builds WordPress to run from the `src` directory.
# - Cleans up after building WordPress to the `src` directory.
test-npm-macos:
name: Test NPM on MacOS
runs-on: macos-latest
if: ${{ github.repository == 'WordPress/wordpress-develop' }}
needs: prepare-workflow
steps:
- name: Checkout repository
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4
- name: Log debug information
run: |
npm --version
node --version
curl --version
git --version
svn --version
- name: Install NodeJS
uses: actions/setup-node@46071b5c7a2e0c34e49c3cb8a0e792e86e18d5ea # v2.1.5
with:
node-version: 14
- name: Cache NodeJS modules
uses: actions/cache@26968a09c0ea4f3e233fdddbafd1166051a095f6 # v2.1.4
if: ${{ matrix.os != 'windows-latest' }}
with:
path: ~/.npm
key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
- name: Install Dependencies
run: npm ci
- name: Build WordPress
run: npm run build
- name: Clean after building
run: npm run grunt clean
- name: Build WordPress in /src
run: npm run build:dev
- name: Clean after building in /src
run: npm run grunt clean --dev

58
.github/workflows/test-old-branches.yml vendored Normal file
View File

@ -0,0 +1,58 @@
name: Test old branches
on:
# Once weekly On Mondays at 00:00 UTC.
schedule:
- cron: '0 0 1,15 * *'
jobs:
dispatch-workflows-for-old-branches:
name: ${{ matrix.workflow }} for ${{ matrix.branch }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
workflow: [
'coding-standards.yml',
'javascript-tests.yml',
'phpunit-tests.yml',
'test-npm.yml'
]
branch: [
'5.7', '5.6', '5.5', '5.4', '5.3', '5.2', '5.1', '5.0',
'4.9', '4.8', '4.7', '4.6', '4.5', '4.4', '4.3', '4.2', '4.1', '4.0',
'3.9', '3.8', '3.7'
]
include:
# PHP Compatibility testing was introduced in 5.5.
- branch: '5.7'
workflow: 'php-compatibility.yml'
- branch: '5.6'
workflow: 'php-compatibility.yml'
- branch: '5.5'
workflow: 'php-compatibility.yml'
# End to End testing was introduced in 5.3 but later removed as there were no meaningful assertions.
# Only the officially supported major branch runs E2E tests so that more assertions can be added, and the
# workflow does not continue to run needlessly on old branches.
- branch: '5.7'
workflow: 'end-to-end-tests.yml'
exclude:
# Coding standards and JavaScript testing did not take place in 3.7.
- branch: '3.7'
workflow: 'coding-standards.yml'
- branch: '3.7'
workflow: 'javascript-tests.yml'
steps:
- name: Dispatch workflow run
uses: actions/github-script@47f7cf65b5ced0830a325f705cad64f2f58dddf7 # v3.1.0
with:
github-token: ${{ secrets.GHA_OLD_BRANCH_DISPATCH }}
script: |
github.actions.createWorkflowDispatch({
owner: context.repo.owner,
repo: context.repo.repo,
workflow_id: '${{ matrix.workflow }}',
ref: '${{ matrix.branch }}'
});

View File

@ -11,7 +11,7 @@ jobs:
if: ${{ github.repository == 'WordPress/wordpress-develop' }}
steps:
- uses: bubkoo/welcome-action@v1
- uses: bubkoo/welcome-action@8dbbac2540d155744c90e4e37da6b05ffc9c5e2c # v1.0.3
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
FIRST_PR_COMMENT: >

View File

@ -485,6 +485,14 @@ module.exports = function(grunt) {
'wp-admin/css/*.css',
'wp-includes/css/*.css',
// Exclude minified and already processed files, and files from external packages.
// These are present when running `grunt build` after `grunt --dev`.
'!wp-admin/css/*-rtl.css',
'!wp-includes/css/*-rtl.css',
'!wp-admin/css/*.min.css',
'!wp-includes/css/*.min.css',
'!wp-includes/css/dist',
// Exceptions
'!wp-includes/css/dashicons.css',
'!wp-includes/css/wp-embed-template.css',

142
package-lock.json generated
View File

@ -80,9 +80,9 @@
"dev": true
},
"@sideway/address": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.0.tgz",
"integrity": "sha512-wAH/JYRXeIFQRsxerIuLjgUu2Xszam+O5xKeatJ4oudShOOirfmsQ1D6LL54XOU2tizpCYku+s1wmU0SYdpoSA==",
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.1.tgz",
"integrity": "sha512-+I5aaQr3m0OAmMr7RQ3fR9zx55sejEYR2BFJaxL+zT3VM2611X0SHvPWIbAUBZVTn/YzYKbV8gJ2oT/QELknfQ==",
"dev": true,
"requires": {
"@hapi/hoek": "^9.0.0"
@ -3095,9 +3095,9 @@
"integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q=="
},
"clean-css": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz",
"integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==",
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.1.2.tgz",
"integrity": "sha512-QcaGg9OuMo+0Ds933yLOY+gHPWbxhxqF0HDexmToPf8pczvmvZGYzd+QqWp9/mkucAOKViI+dSFOqoZIvXbeBw==",
"dev": true,
"requires": {
"source-map": "~0.6.0"
@ -6310,34 +6310,94 @@
}
},
"grunt-contrib-cssmin": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-cssmin-3.0.0.tgz",
"integrity": "sha512-eXpooYmVGKMs/xV7DzTLgJFPVOfMuawPD3x0JwhlH0mumq2NtH3xsxaHxp1Y3NKxp0j0tRhFS6kSBRsz6TuTGg==",
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-cssmin-4.0.0.tgz",
"integrity": "sha512-jXU+Zlk8Q8XztOGNGpjYlD/BDQ0n95IHKrQKtFR7Gd8hZrzgqiG1Ra7cGYc8h2DD9vkSFGNlweb9Q00rBxOK2w==",
"dev": true,
"requires": {
"chalk": "^2.4.1",
"clean-css": "~4.2.1",
"maxmin": "^2.1.0"
"chalk": "^4.1.0",
"clean-css": "^5.0.1",
"maxmin": "^3.0.0"
},
"dependencies": {
"ansi-styles": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
"color-convert": "^1.9.0"
"color-convert": "^2.0.1"
}
},
"chalk": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
"integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
"integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
"dev": true,
"requires": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
"figures": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
"integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
"dev": true,
"requires": {
"escape-string-regexp": "^1.0.5"
}
},
"gzip-size": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz",
"integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==",
"dev": true,
"requires": {
"duplexer": "^0.1.1",
"pify": "^4.0.1"
}
},
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
"maxmin": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/maxmin/-/maxmin-3.0.0.tgz",
"integrity": "sha512-wcahMInmGtg/7c6a75fr21Ch/Ks1Tb+Jtoan5Ft4bAI0ZvJqyOw8kkM7e7p8hDSzY805vmxwHT50KcjGwKyJ0g==",
"dev": true,
"requires": {
"chalk": "^4.1.0",
"figures": "^3.2.0",
"gzip-size": "^5.1.1",
"pretty-bytes": "^5.3.0"
}
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
"has-flag": "^4.0.0"
}
}
}
@ -8059,9 +8119,9 @@
}
},
"joi": {
"version": "17.3.0",
"resolved": "https://registry.npmjs.org/joi/-/joi-17.3.0.tgz",
"integrity": "sha512-Qh5gdU6niuYbUIUV5ejbsMiiFmBdw8Kcp8Buj2JntszCkCfxJ9Cz76OtHxOZMPXrt5810iDIXs+n1nNVoquHgg==",
"version": "17.4.0",
"resolved": "https://registry.npmjs.org/joi/-/joi-17.4.0.tgz",
"integrity": "sha512-F4WiW2xaV6wc1jxete70Rw4V/VuMd6IN+a5ilZsxG4uYtUXWu2kq9W5P2dz30e7Gmw8RCbY/u/uk+dMPma9tAg==",
"dev": true,
"requires": {
"@hapi/hoek": "^9.0.0",
@ -12189,9 +12249,9 @@
}
},
"sass": {
"version": "1.32.6",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.32.6.tgz",
"integrity": "sha512-1bcDHDcSqeFtMr0JXI3xc/CXX6c4p0wHHivJdru8W7waM7a1WjKMm4m/Z5sY7CbVw4Whi2Chpcw6DFfSWwGLzQ==",
"version": "1.32.8",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.32.8.tgz",
"integrity": "sha512-Sl6mIeGpzjIUZqvKnKETfMf0iDAswD9TNlv13A7aAF3XZlRPMq4VvJWBC2N2DXbp94MQVdNSFG6LfF/iOXrPHQ==",
"dev": true,
"requires": {
"chokidar": ">=2.0.0 <4.0.0"
@ -14180,9 +14240,9 @@
"dev": true
},
"uglify-js": {
"version": "3.12.6",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.12.6.tgz",
"integrity": "sha512-aqWHe3DfQmZUDGWBbabZ2eQnJlQd1fKlMUu7gV+MiTuDzdgDw31bI3wA2jLLsV/hNcDP26IfyEgSVoft5+0SVw==",
"version": "3.13.3",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.3.tgz",
"integrity": "sha512-otIc7O9LyxpUcQoXzj2hL4LPWKklO6LJWoJUzNa8A17Xgi4fOeDC8FBDOLHnC/Slo1CQgsZMcM6as0M76BZaig==",
"dev": true
},
"uglify-to-browserify": {
@ -14725,28 +14785,28 @@
"dev": true
},
"wait-on": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/wait-on/-/wait-on-5.2.1.tgz",
"integrity": "sha512-H2F986kNWMU9hKlI9l/ppO6tN8ZSJd35yBljMLa1/vjzWP++Qh6aXyt77/u7ySJFZQqBtQxnvm/xgG48AObXcw==",
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/wait-on/-/wait-on-5.3.0.tgz",
"integrity": "sha512-DwrHrnTK+/0QFaB9a8Ol5Lna3k7WvUR4jzSKmz0YaPBpuN2sACyiPVKVfj6ejnjcajAcvn3wlbTyMIn9AZouOg==",
"dev": true,
"requires": {
"axios": "^0.21.1",
"joi": "^17.3.0",
"lodash": "^4.17.20",
"lodash": "^4.17.21",
"minimist": "^1.2.5",
"rxjs": "^6.6.3"
},
"dependencies": {
"lodash": {
"version": "4.17.20",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
"integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"dev": true
},
"rxjs": {
"version": "6.6.3",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
"integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
"version": "6.6.7",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
"integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
"dev": true,
"requires": {
"tslib": "^1.9.0"

View File

@ -38,7 +38,7 @@
"grunt-contrib-clean": "~2.0.0",
"grunt-contrib-concat": "1.0.1",
"grunt-contrib-copy": "~1.0.0",
"grunt-contrib-cssmin": "~3.0.0",
"grunt-contrib-cssmin": "~4.0.0",
"grunt-contrib-imagemin": "~4.0.0",
"grunt-contrib-jshint": "3.0.0",
"grunt-contrib-qunit": "^4.0.0",
@ -58,11 +58,11 @@
"ink-docstrap": "1.3.2",
"jquery-migrate": "1.4.1",
"matchdep": "~2.0.0",
"sass": "^1.32.6",
"sass": "^1.32.8",
"source-map-loader": "^1.1.3",
"uglify-js": "^3.12.6",
"uglify-js": "^3.13.2",
"uglifyjs-webpack-plugin": "2.2.0",
"wait-on": "^5.2.1",
"wait-on": "^5.3.0",
"webpack": "4.43.0",
"webpack-dev-server": "3.11.2",
"webpack-livereload-plugin": "2.3.0"