mirror of
git://develop.git.wordpress.org/
synced 2025-01-17 21:08:44 +01:00
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 [58165]. 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 (#60822). - `macos-13` is now pinned for MacOS jobs instead of `macos-latest` (#61340). - Run E2E tests with and without `SCRIPT_DEBUG` (#58661). - Migrating to Docker Compose V2 (#60901). - Removing the `version` property from `docker-compose.yml` (#59416). - Improvements to how artifacts and comments for Playground testing are generated. - Removing SVN related commands causing failures (#61216). - Updating the `actions/github-scripts` action to the latest version. - Move the Memcached container into the Docker Compose config (#55700). - Configure Xdebug modes in the local Docker environment (#56022). Merges [53895], [53552], [56113], [56114], [57918], [58157], [57124], [57125], [57249] to the 6.0 branch. Props johnbillion, joemcgill, swissspidy, thelovekesh, narenin, mukesh27, JeffPaul, peterwilsoncc, zieladam, ockham, SergeyBiryukov, jorbin, Clorith, afragen. See #55700, #61340, #60822, #61216, #60901, #61101, #59416, #59805, #61213, #58661. git-svn-id: https://develop.svn.wordpress.org/branches/6.0@58357 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
3076736490
commit
51aaf31597
134
.github/workflows/coding-standards.yml
vendored
134
.github/workflows/coding-standards.yml
vendored
@ -9,8 +9,9 @@ on:
|
||||
- '3.[89]'
|
||||
- '[4-9].[0-9]'
|
||||
tags:
|
||||
- '3.[89]*'
|
||||
- '[4-9].[0-9]*'
|
||||
- '[0-9]+.[0-9]'
|
||||
- '[0-9]+.[0-9].[0-9]+'
|
||||
- '!3.7.[0-9]+'
|
||||
pull_request:
|
||||
branches:
|
||||
- trunk
|
||||
@ -39,130 +40,35 @@ concurrency:
|
||||
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:
|
||||
# Runs PHP coding standards checks.
|
||||
#
|
||||
# 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.
|
||||
phpcs:
|
||||
name: PHP coding standards
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 20
|
||||
uses: WordPress/wordpress-develop/.github/workflows/reusable-coding-standards-php.yml@trunk
|
||||
permissions:
|
||||
contents: read
|
||||
if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
|
||||
|
||||
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
|
||||
with:
|
||||
php-version: '7.4'
|
||||
|
||||
# Runs the JavaScript coding standards checks.
|
||||
#
|
||||
# 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.
|
||||
jshint:
|
||||
name: JavaScript coding standards
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 20
|
||||
uses: WordPress/wordpress-develop/.github/workflows/reusable-coding-standards-javascript.yml@trunk
|
||||
permissions:
|
||||
contents: read
|
||||
if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
|
||||
env:
|
||||
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: ${{ true }}
|
||||
|
||||
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
|
||||
|
||||
slack-notifications:
|
||||
name: Slack Notifications
|
||||
uses: WordPress/wordpress-develop/.github/workflows/slack-notifications.yml@trunk
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
needs: [ phpcs, jshint ]
|
||||
if: ${{ github.repository == 'WordPress/wordpress-develop' && github.event_name != 'pull_request' && always() }}
|
||||
with:
|
||||
@ -176,6 +82,8 @@ jobs:
|
||||
failed-workflow:
|
||||
name: Failed workflow tasks
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: write
|
||||
needs: [ phpcs, jshint, slack-notifications ]
|
||||
if: |
|
||||
always() &&
|
||||
@ -189,7 +97,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Dispatch workflow run
|
||||
uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975 # v6.4.0
|
||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
|
||||
with:
|
||||
retries: 2
|
||||
retry-exempt-status-codes: 418
|
||||
|
114
.github/workflows/end-to-end-tests.yml
vendored
114
.github/workflows/end-to-end-tests.yml
vendored
@ -8,8 +8,10 @@ on:
|
||||
- '5.[3-9]'
|
||||
- '[6-9].[0-9]'
|
||||
tags:
|
||||
- '5.[3-9]*'
|
||||
- '[6-9].[0-9]*'
|
||||
- '[0-9]+.[0-9]'
|
||||
- '[0-9]+.[0-9].[0-9]+'
|
||||
- '![34].[0-9].[0-9]+'
|
||||
- '!5.[0-2].[0-9]+'
|
||||
pull_request:
|
||||
branches:
|
||||
- trunk
|
||||
@ -24,105 +26,36 @@ concurrency:
|
||||
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: {}
|
||||
|
||||
env:
|
||||
LOCAL_DIR: build
|
||||
LOCAL_PHP: 8.0-fpm
|
||||
|
||||
jobs:
|
||||
# Runs the end-to-end test suite.
|
||||
#
|
||||
# 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.
|
||||
e2e-tests:
|
||||
name: E2E Tests
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 20
|
||||
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
|
||||
if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
|
||||
|
||||
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() }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
LOCAL_SCRIPT_DEBUG: [ true, false ]
|
||||
with:
|
||||
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 }}
|
||||
LOCAL_SCRIPT_DEBUG: ${{ matrix.LOCAL_SCRIPT_DEBUG }}
|
||||
php-version: '8.0'
|
||||
install-gutenberg: false
|
||||
|
||||
failed-workflow:
|
||||
name: Failed workflow tasks
|
||||
runs-on: ubuntu-latest
|
||||
needs: [ e2e-tests, slack-notifications ]
|
||||
permissions:
|
||||
actions: write
|
||||
needs: [ e2e-tests ]
|
||||
if: |
|
||||
always() &&
|
||||
github.repository == 'WordPress/wordpress-develop' &&
|
||||
@ -131,10 +64,9 @@ jobs:
|
||||
(
|
||||
needs.e2e-tests.result == 'cancelled' || needs.e2e-tests.result == 'failure'
|
||||
)
|
||||
|
||||
steps:
|
||||
- name: Dispatch workflow run
|
||||
uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975 # v6.4.0
|
||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
|
||||
with:
|
||||
retries: 2
|
||||
retry-exempt-status-codes: 418
|
||||
|
55
.github/workflows/javascript-tests.yml
vendored
55
.github/workflows/javascript-tests.yml
vendored
@ -8,8 +8,9 @@ on:
|
||||
- '3.[89]'
|
||||
- '[4-9].[0-9]'
|
||||
tags:
|
||||
- '3.[89]*'
|
||||
- '[4-9].[0-9]*'
|
||||
- '[0-9]+.[0-9]'
|
||||
- '[0-9]+.[0-9].[0-9]+'
|
||||
- '!3.7.[0-9]+'
|
||||
pull_request:
|
||||
branches:
|
||||
- trunk
|
||||
@ -37,51 +38,25 @@ concurrency:
|
||||
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:
|
||||
# Runs the QUnit tests for WordPress.
|
||||
#
|
||||
# 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.
|
||||
test-js:
|
||||
name: QUnit Tests
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 20
|
||||
uses: WordPress/wordpress-develop/.github/workflows/reusable-javascript-tests.yml@trunk
|
||||
permissions:
|
||||
contents: read
|
||||
if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
|
||||
|
||||
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
|
||||
|
||||
slack-notifications:
|
||||
name: Slack Notifications
|
||||
uses: WordPress/wordpress-develop/.github/workflows/slack-notifications.yml@trunk
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
needs: [ test-js ]
|
||||
if: ${{ github.repository == 'WordPress/wordpress-develop' && github.event_name != 'pull_request' && always() }}
|
||||
with:
|
||||
@ -95,6 +70,8 @@ jobs:
|
||||
failed-workflow:
|
||||
name: Failed workflow tasks
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: write
|
||||
needs: [ test-js, slack-notifications ]
|
||||
if: |
|
||||
always() &&
|
||||
@ -107,7 +84,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Dispatch workflow run
|
||||
uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975 # v6.4.0
|
||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
|
||||
with:
|
||||
retries: 2
|
||||
retry-exempt-status-codes: 418
|
||||
|
86
.github/workflows/php-compatibility.yml
vendored
86
.github/workflows/php-compatibility.yml
vendored
@ -8,8 +8,10 @@ on:
|
||||
- '5.[5-9]'
|
||||
- '[6-9].[0-9]'
|
||||
tags:
|
||||
- '5.[5-9]*'
|
||||
- '[6-9].[0-9]*'
|
||||
- '[0-9]+.[0-9]'
|
||||
- '[0-9]+.[0-9].[0-9]+'
|
||||
- '![34].[0-9].[0-9]+'
|
||||
- '!5.[0-4].[0-9]+'
|
||||
pull_request:
|
||||
branches:
|
||||
- trunk
|
||||
@ -33,79 +35,27 @@ concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
# Disable permissions for all available scopes by default.
|
||||
# Any needed permissions should be configured at the job level.
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
# Runs PHP compatibility testing.
|
||||
#
|
||||
# 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.
|
||||
php-compatibility:
|
||||
name: Check PHP compatibility
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 20
|
||||
uses: WordPress/wordpress-develop/.github/workflows/reusable-php-compatibility.yml@trunk
|
||||
permissions:
|
||||
contents: read
|
||||
if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
|
||||
|
||||
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
|
||||
with:
|
||||
php-version: '7.4'
|
||||
|
||||
slack-notifications:
|
||||
name: Slack Notifications
|
||||
uses: WordPress/wordpress-develop/.github/workflows/slack-notifications.yml@trunk
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
needs: [ php-compatibility ]
|
||||
if: ${{ github.repository == 'WordPress/wordpress-develop' && github.event_name != 'pull_request' && always() }}
|
||||
with:
|
||||
@ -119,6 +69,8 @@ jobs:
|
||||
failed-workflow:
|
||||
name: Failed workflow tasks
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: write
|
||||
needs: [ php-compatibility, slack-notifications ]
|
||||
if: |
|
||||
always() &&
|
||||
@ -131,7 +83,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Dispatch workflow run
|
||||
uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975 # v6.4.0
|
||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
|
||||
with:
|
||||
retries: 2
|
||||
retry-exempt-status-codes: 418
|
||||
|
232
.github/workflows/phpunit-tests.yml
vendored
232
.github/workflows/phpunit-tests.yml
vendored
@ -7,8 +7,8 @@ on:
|
||||
- '3.[7-9]'
|
||||
- '[4-9].[0-9]'
|
||||
tags:
|
||||
- '3.[7-9]*'
|
||||
- '[4-9].[0-9]*'
|
||||
- '[0-9]+.[0-9]'
|
||||
- '[0-9]+.[0-9].[0-9]+'
|
||||
pull_request:
|
||||
branches:
|
||||
- trunk
|
||||
@ -26,208 +26,74 @@ concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }}
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: ${{ true }}
|
||||
LOCAL_PHP_MEMCACHED: ${{ false }}
|
||||
SLOW_TESTS: 'external-http,media,restapi'
|
||||
# Disable permissions for all available scopes by default.
|
||||
# Any needed permissions should be configured at the job level.
|
||||
permissions: {}
|
||||
|
||||
|
||||
jobs:
|
||||
# Runs the PHPUnit tests for WordPress.
|
||||
#
|
||||
# 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.
|
||||
# Creates a PHPUnit test job for each PHP/MySQL combination.
|
||||
#
|
||||
# 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.
|
||||
test-php:
|
||||
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
|
||||
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
|
||||
if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php: [ '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1' ]
|
||||
os: [ ubuntu-latest ]
|
||||
memcached: [ false ]
|
||||
split_slow: [ false ]
|
||||
php: [ '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1' ]
|
||||
db-type: [ 'mysql' ]
|
||||
db-version: [ '5.7' ]
|
||||
multisite: [ false, true ]
|
||||
memcached: [ false ]
|
||||
|
||||
include:
|
||||
# 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
|
||||
# Allow PHP 8.1 tests to have errors.
|
||||
- php: '8.1'
|
||||
allow-errors: true
|
||||
# Include jobs for PHP 7.4 with memcached.
|
||||
- php: '7.4'
|
||||
os: ubuntu-latest
|
||||
memcached: true
|
||||
- os: ubuntu-latest
|
||||
php: '7.4'
|
||||
db-type: 'mysql'
|
||||
db-version: '5.7'
|
||||
multisite: false
|
||||
- php: '7.4'
|
||||
os: ubuntu-latest
|
||||
memcached: true
|
||||
- os: ubuntu-latest
|
||||
php: '7.4'
|
||||
db-type: 'mysql'
|
||||
db-version: '5.7'
|
||||
multisite: true
|
||||
memcached: true
|
||||
# Report the results of the PHP 7.4 without memcached job.
|
||||
- php: '7.4'
|
||||
os: ubuntu-latest
|
||||
memcached: false
|
||||
- os: ubuntu-latest
|
||||
php: '7.4'
|
||||
db-type: 'mysql'
|
||||
db-version: '5.7'
|
||||
multisite: false
|
||||
memcached: false
|
||||
report: true
|
||||
|
||||
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
|
||||
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 }}
|
||||
|
||||
slack-notifications:
|
||||
name: Slack Notifications
|
||||
uses: WordPress/wordpress-develop/.github/workflows/slack-notifications.yml@trunk
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
needs: [ test-php ]
|
||||
if: ${{ github.repository == 'WordPress/wordpress-develop' && github.event_name != 'pull_request' && always() }}
|
||||
with:
|
||||
@ -241,6 +107,8 @@ jobs:
|
||||
failed-workflow:
|
||||
name: Failed workflow tasks
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: write
|
||||
needs: [ test-php, slack-notifications ]
|
||||
if: |
|
||||
always() &&
|
||||
@ -253,7 +121,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Dispatch workflow run
|
||||
uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975 # v6.4.0
|
||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
|
||||
with:
|
||||
retries: 2
|
||||
retry-exempt-status-codes: 418
|
||||
|
135
.github/workflows/test-build-processes.yml
vendored
Normal file
135
.github/workflows/test-build-processes.yml
vendored
Normal file
@ -0,0 +1,135 @@
|
||||
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 }}'
|
||||
}
|
||||
});
|
208
.github/workflows/test-npm.yml
vendored
208
.github/workflows/test-npm.yml
vendored
@ -1,208 +0,0 @@
|
||||
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 }}'
|
||||
}
|
||||
});
|
@ -1,5 +1,3 @@
|
||||
version: '3.7'
|
||||
|
||||
services:
|
||||
|
||||
##
|
||||
@ -25,7 +23,10 @@ services:
|
||||
command: /bin/sh -c "envsubst '$$LOCAL_DIR' < /etc/nginx/conf.d/default.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'"
|
||||
|
||||
depends_on:
|
||||
- php
|
||||
php:
|
||||
condition: service_started
|
||||
mysql:
|
||||
condition: service_healthy
|
||||
|
||||
##
|
||||
# The PHP container.
|
||||
@ -38,6 +39,7 @@ services:
|
||||
|
||||
environment:
|
||||
- LOCAL_PHP_XDEBUG=${LOCAL_PHP_XDEBUG-false}
|
||||
- XDEBUG_MODE=${LOCAL_PHP_XDEBUG_MODE-develop,debug}
|
||||
- LOCAL_PHP_MEMCACHED=${LOCAL_PHP_MEMCACHED-false}
|
||||
- PHP_FPM_UID=${PHP_FPM_UID-1000}
|
||||
- PHP_FPM_GID=${PHP_FPM_GID-1000}
|
||||
@ -51,9 +53,6 @@ services:
|
||||
# Copy or delete the Memcached dropin plugin file as appropriate.
|
||||
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"
|
||||
|
||||
depends_on:
|
||||
- mysql
|
||||
|
||||
# The init directive ensures the command runs with a PID > 1, so Ctrl+C works correctly.
|
||||
init: true
|
||||
|
||||
@ -64,7 +63,8 @@ services:
|
||||
# The MySQL container.
|
||||
##
|
||||
mysql:
|
||||
image: amd64/${LOCAL_DB_TYPE-mysql}:${LOCAL_DB_VERSION-latest}
|
||||
image: ${LOCAL_DB_TYPE-mysql}:${LOCAL_DB_VERSION-latest}
|
||||
platform: linux/amd64
|
||||
|
||||
networks:
|
||||
- wpdevnet
|
||||
@ -82,6 +82,12 @@ services:
|
||||
# For compatibility with PHP versions that don't support the caching_sha2_password auth plugin used in MySQL 8.0.
|
||||
command: --default-authentication-plugin=mysql_native_password
|
||||
|
||||
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
|
||||
|
||||
##
|
||||
# The WP CLI container.
|
||||
##
|
||||
@ -106,6 +112,12 @@ services:
|
||||
extra_hosts:
|
||||
- localhost:host-gateway
|
||||
|
||||
depends_on:
|
||||
php:
|
||||
condition: service_started
|
||||
mysql:
|
||||
condition: service_healthy
|
||||
|
||||
##
|
||||
# The Memcached container.
|
||||
##
|
||||
@ -118,6 +130,10 @@ services:
|
||||
ports:
|
||||
- 11211:11211
|
||||
|
||||
depends_on:
|
||||
php:
|
||||
condition: service_started
|
||||
|
||||
volumes:
|
||||
# So that sites aren't wiped every time containers are restarted, MySQL uses a persistent volume.
|
||||
mysql: {}
|
||||
|
@ -4,5 +4,5 @@ const { execSync } = require( 'child_process' );
|
||||
|
||||
dotenvExpand.expand( dotenv.config() );
|
||||
|
||||
// Execute any docker-compose command passed to this script.
|
||||
execSync( 'docker-compose ' + process.argv.slice( 2 ).join( ' ' ), { stdio: 'inherit' } );
|
||||
// Execute any docker compose command passed to this script.
|
||||
execSync( 'docker compose ' + process.argv.slice( 2 ).join( ' ' ), { stdio: 'inherit' } );
|
||||
|
@ -45,7 +45,7 @@ wait_on( { resources: [ `tcp:localhost:${process.env.LOCAL_PORT}`] } )
|
||||
* @param {string} cmd The WP-CLI command to run.
|
||||
*/
|
||||
function wp_cli( cmd ) {
|
||||
execSync( `docker-compose run --rm cli ${cmd}`, { stdio: 'inherit' } );
|
||||
execSync( `docker compose run --rm cli ${cmd}`, { stdio: 'inherit' } );
|
||||
}
|
||||
|
||||
/**
|
||||
@ -54,6 +54,6 @@ function wp_cli( cmd ) {
|
||||
function install_wp_importer() {
|
||||
const testPluginDirectory = 'tests/phpunit/data/plugins/wordpress-importer';
|
||||
|
||||
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' } );
|
||||
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' } );
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ dotenvExpand.expand( dotenv.config() );
|
||||
const containers = ( process.env.LOCAL_PHP_MEMCACHED === 'true' )
|
||||
? 'wordpress-develop memcached'
|
||||
: 'wordpress-develop';
|
||||
execSync( `docker-compose up -d -- ${containers}`, { stdio: 'inherit' } );
|
||||
execSync( `docker compose up -d -- ${containers}`, { stdio: 'inherit' } );
|
||||
|
||||
// If Docker Toolbox is being used, we need to manually forward LOCAL_PORT to the Docker VM.
|
||||
if ( process.env.DOCKER_TOOLBOX_INSTALL_PATH ) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user