mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2025-10-16 12:05:38 +00:00
This modifies the PHPUnit workflow to add MySQL version 8.0 to the strategy matrix. It also adds an additional strategy matrix to expand testing to include several supported MariaDB versions. To prevent repeating code, the business logic of the PHPUnit testing has been moved to a new, callable workflow. Because callable workflows target a specific branch, branches created in the future will continue to benefit from improvements made to the workflow in `trunk` without requiring backports. If a breaking change is required, older branches will need to be updated to target the commit SHA representing the final commit of the previous state. Props johnbillion, pento, boonebgorges, netweb, nacin, desrosj. Fixes #30462. git-svn-id: https://develop.svn.wordpress.org/trunk@56439 602fd350-edb4-49c9-b593-d223f7449a82
182 lines
5.9 KiB
YAML
182 lines
5.9 KiB
YAML
name: PHPUnit Tests
|
|
|
|
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]'
|
|
workflow_dispatch:
|
|
# Once weekly On Sundays at 00:00 UTC.
|
|
schedule:
|
|
- cron: '0 0 * * 0'
|
|
|
|
# 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:
|
|
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: ${{ true }}
|
|
LOCAL_PHP_MEMCACHED: ${{ false }}
|
|
|
|
jobs:
|
|
#
|
|
# Creates a PHPUnit test job for each PHP/MySQL combination.
|
|
#
|
|
test-with-mysql:
|
|
name: PHP ${{ matrix.php }}
|
|
uses: desrosj/wordpress-develop/.github/workflows/phpunit-tests-run.yml@expanded-db-testing-callable-workflow
|
|
permissions:
|
|
contents: read
|
|
if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ ubuntu-latest ]
|
|
php: [ '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2' ]
|
|
db-type: [ 'mysql' ]
|
|
db-version: [ '5.7', '8.0' ]
|
|
multisite: [ false, true ]
|
|
memcached: [ false ]
|
|
|
|
include:
|
|
# Include jobs for PHP 7.4 with memcached.
|
|
- os: ubuntu-latest
|
|
php: '7.4'
|
|
db-type: 'mysql'
|
|
db-version: '5.7'
|
|
multisite: false
|
|
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.
|
|
- os: ubuntu-latest
|
|
php: '7.4'
|
|
db-type: 'mysql'
|
|
db-version: '5.7'
|
|
multisite: false
|
|
memcached: false
|
|
report: true
|
|
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 }}
|
|
|
|
#
|
|
# Creates a PHPUnit test job for each PHP/MariaDB combination.
|
|
#
|
|
test-with-mariadb:
|
|
name: PHP ${{ matrix.php }}
|
|
uses: desrosj/wordpress-develop/.github/workflows/phpunit-tests-run.yml@expanded-db-testing-callable-workflow
|
|
permissions:
|
|
contents: read
|
|
if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ ubuntu-latest ]
|
|
php: [ '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2' ]
|
|
db-type: [ 'mariadb' ]
|
|
db-version: [ '10.4', '10.6', '10.11', '11.0' ]
|
|
multisite: [ false, true ]
|
|
memcached: [ false ]
|
|
report: [ false ]
|
|
|
|
include:
|
|
# Include jobs for PHP 7.4 with memcached.
|
|
- os: ubuntu-latest
|
|
php: '7.4'
|
|
db-type: 'mariadb'
|
|
db-version: '11.0'
|
|
multisite: false
|
|
memcached: true
|
|
report: false
|
|
- os: ubuntu-latest
|
|
php: '7.4'
|
|
db-type: 'mariadb'
|
|
db-version: '11.0'
|
|
multisite: true
|
|
memcached: true
|
|
report: false
|
|
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 }}
|
|
|
|
slack-notifications:
|
|
name: Slack Notifications
|
|
uses: WordPress/wordpress-develop/.github/workflows/slack-notifications.yml@trunk
|
|
permissions:
|
|
actions: read
|
|
contents: read
|
|
needs: [ test-with-mysql, test-with-mariadb ]
|
|
if: ${{ github.repository == 'WordPress/wordpress-develop' && github.event_name != 'pull_request' && always() }}
|
|
with:
|
|
calling_status: ${{ needs.test-with-mysql.result == 'success' && needs.test-with-mariadb.result == 'success' && 'success' || ( needs.test-with-mysql.result == 'cancelled' || needs.test-with-mariadb.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
|
|
permissions:
|
|
actions: write
|
|
needs: [ slack-notifications ]
|
|
if: |
|
|
always() &&
|
|
github.repository == 'WordPress/wordpress-develop' &&
|
|
github.event_name != 'pull_request' &&
|
|
github.run_attempt < 2 &&
|
|
(
|
|
needs.test-php.result == 'cancelled' || needs.test-php.result == 'failure'
|
|
)
|
|
|
|
steps:
|
|
- name: Dispatch workflow run
|
|
uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.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 }}'
|
|
}
|
|
});
|