mirror of
git://develop.git.wordpress.org/
synced 2025-02-22 07:35:46 +01:00
Compose V2, which was first released in 2020, is included with all currently supported versions of Docker Desktop. Compose V1 stopped receiving updates in July 2023. The biggest difference is that the command to interact with Compose changed from `docker-compose` to `docker compose`. GitHub has now started removing V1 from Ubuntu & Windows images, which caused all Docker-based GitHub Actions workflows to fail. This change migrates to the new `docker compose` command to address these failures. Props swissspidy, thelovekesh. Fixes #60901. git-svn-id: https://develop.svn.wordpress.org/trunk@57918 602fd350-edb4-49c9-b593-d223f7449a82
186 lines
6.0 KiB
YAML
186 lines
6.0 KiB
YAML
name: End-to-end Tests
|
|
|
|
on:
|
|
# The end-to-end test suite was introduced in WordPress 5.3.
|
|
push:
|
|
branches:
|
|
- trunk
|
|
- '5.[3-9]'
|
|
- '[6-9].[0-9]'
|
|
tags:
|
|
- '[0-9]+.[0-9]'
|
|
- '[0-9]+.[0-9].[0-9]+'
|
|
- '![34].[0-9].[0-9]+'
|
|
- '!5.[0-2].[0-9]+'
|
|
pull_request:
|
|
branches:
|
|
- trunk
|
|
- '5.[3-9]'
|
|
- '[6-9].[0-9]'
|
|
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: {}
|
|
|
|
env:
|
|
LOCAL_DIR: build
|
|
PUPPETEER_SKIP_DOWNLOAD: ${{ true }}
|
|
|
|
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.
|
|
# - Install Playwright browsers.
|
|
# - 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.
|
|
# - Install Gutenberg.
|
|
# - Run the E2E tests.
|
|
# - Ensures version-controlled files are not modified or deleted.
|
|
e2e-tests:
|
|
name: E2E Tests with SCRIPT_DEBUG ${{ matrix.LOCAL_SCRIPT_DEBUG && 'enabled' || 'disabled' }}
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: read
|
|
timeout-minutes: 20
|
|
if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
LOCAL_SCRIPT_DEBUG: [ true, false ]
|
|
|
|
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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
with:
|
|
show-progress: ${{ runner.debug == '1' && 'true' || 'false' }}
|
|
|
|
- name: Set up Node.js
|
|
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
|
with:
|
|
node-version-file: '.nvmrc'
|
|
cache: npm
|
|
|
|
- name: Log debug information
|
|
run: |
|
|
npm --version
|
|
node --version
|
|
curl --version
|
|
git --version
|
|
locale -a
|
|
|
|
- name: Install npm Dependencies
|
|
run: npm ci
|
|
|
|
- name: Install Playwright browsers
|
|
run: npx playwright install --with-deps
|
|
|
|
- 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 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
|
|
env:
|
|
LOCAL_SCRIPT_DEBUG: ${{ matrix.LOCAL_SCRIPT_DEBUG }}
|
|
run: npm run env:install
|
|
|
|
- name: Install Gutenberg
|
|
run: npm run env:cli -- plugin install gutenberg --path=/var/www/${{ env.LOCAL_DIR }}
|
|
|
|
- name: Run E2E tests
|
|
run: npm run test:e2e
|
|
|
|
- name: Archive debug artifacts (screenshots, HTML snapshots)
|
|
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
|
|
if: always()
|
|
with:
|
|
name: failures-artifacts${{ matrix.LOCAL_SCRIPT_DEBUG && '-SCRIPT_DEBUG' || '' }}-${{ github.run_id }}
|
|
path: artifacts
|
|
if-no-files-found: ignore
|
|
|
|
- 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: [ e2e-tests ]
|
|
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: [ e2e-tests, 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 }}'
|
|
}
|
|
});
|