2020-12-18 00:28:27 +00:00
|
|
|
name: Code Coverage Report
|
|
|
|
|
|
|
|
on:
|
2021-03-26 13:23:52 +00:00
|
|
|
# Verify
|
|
|
|
push:
|
|
|
|
branches:
|
|
|
|
- master
|
|
|
|
- trunk
|
|
|
|
paths:
|
2021-03-26 15:12:30 +00:00
|
|
|
- '.github/workflows/test-coverage.yml'
|
2021-03-26 13:23:52 +00:00
|
|
|
- 'phpunit.xml.dist'
|
|
|
|
- 'tests/phpunit/multisite.xml'
|
2021-01-04 19:46:34 +00:00
|
|
|
# Once daily at 00:00 UTC.
|
2020-12-18 00:28:27 +00:00
|
|
|
schedule:
|
2021-01-04 19:46:34 +00:00
|
|
|
- cron: '0 0 * * *'
|
2021-03-26 13:23:52 +00:00
|
|
|
# Allow manually triggering the workflow.
|
|
|
|
workflow_dispatch:
|
2020-12-18 00:28:27 +00:00
|
|
|
|
|
|
|
env:
|
|
|
|
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: ${{ true }}
|
|
|
|
LOCAL_PHP: '7.4-fpm'
|
|
|
|
LOCAL_PHP_XDEBUG: true
|
|
|
|
LOCAL_PHP_MEMCACHED: ${{ false }}
|
|
|
|
|
|
|
|
jobs:
|
|
|
|
# Sets up WordPress for testing or development use.
|
|
|
|
#
|
|
|
|
# Performs the following steps:
|
|
|
|
# - Set environment variables.
|
|
|
|
# - Checks out the repository.
|
|
|
|
# - Checks out the WordPress Importer plugin (needed for the Core PHPUnit tests).
|
|
|
|
# - Logs debug information about the runner container.
|
|
|
|
# - Installs NodeJS 14.
|
|
|
|
# _ Installs NPM dependencies using install-changed to hash the `package.json` file.
|
|
|
|
# - Logs Docker debug information (about the Docker installation within the runner).
|
|
|
|
# - Starts the WordPress Docker container.
|
|
|
|
# - Logs debug general information.
|
|
|
|
# - Logs the running Docker containers.
|
|
|
|
# - Logs WordPress Docker container debug information.
|
|
|
|
# - Logs debug information about what's installed within the WordPress Docker containers.
|
|
|
|
# - Install WordPress within the Docker container.
|
2021-01-04 19:46:34 +00:00
|
|
|
# - Run the PHPUnit tests as a single site.
|
2021-07-06 18:36:46 +00:00
|
|
|
# - Ensures version-controlled files are not modified or deleted.
|
2021-01-04 19:46:34 +00:00
|
|
|
# - Upload the single site code coverage report to Codecov.io.
|
2020-12-18 00:28:27 +00:00
|
|
|
# - Run the PHPUnit tests as a multisite.
|
2021-07-06 18:36:46 +00:00
|
|
|
# - Ensures version-controlled files are not modified or deleted.
|
2021-01-04 19:46:34 +00:00
|
|
|
# - Upload the multisite code coverage report to Codecov.io.
|
2020-12-18 00:28:27 +00:00
|
|
|
test-coverage-report:
|
2021-03-26 15:09:19 +00:00
|
|
|
name: ${{ matrix.multisite && 'Multisite' || 'Single site' }} report
|
2020-12-18 00:28:27 +00:00
|
|
|
runs-on: ubuntu-latest
|
|
|
|
if: ${{ github.repository == 'WordPress/wordpress-develop' }}
|
2021-03-26 15:09:19 +00:00
|
|
|
strategy:
|
|
|
|
fail-fast: false
|
|
|
|
matrix:
|
|
|
|
multisite: [ false, true ]
|
2020-12-18 00:28:27 +00:00
|
|
|
|
|
|
|
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
|
2021-03-03 20:29:04 +00:00
|
|
|
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4
|
2020-12-18 00:28:27 +00:00
|
|
|
|
|
|
|
- name: Log debug information
|
|
|
|
run: |
|
|
|
|
echo "$GITHUB_REF"
|
|
|
|
echo "$GITHUB_EVENT_NAME"
|
|
|
|
npm --version
|
|
|
|
node --version
|
|
|
|
curl --version
|
|
|
|
git --version
|
|
|
|
svn --version
|
|
|
|
php --version
|
|
|
|
php -i
|
|
|
|
locale -a
|
|
|
|
|
|
|
|
- name: Install NodeJS
|
2021-07-06 13:12:13 +00:00
|
|
|
uses: actions/setup-node@38d90ce44d5275ad62cc48384b3d8a58c500bb5f # v2.2.2
|
2020-12-18 00:28:27 +00:00
|
|
|
with:
|
|
|
|
node-version: 14
|
2021-07-06 13:12:13 +00:00
|
|
|
cache: npm
|
2020-12-18 00:28:27 +00:00
|
|
|
|
|
|
|
- name: Install Dependencies
|
2021-02-26 22:47:33 +00:00
|
|
|
run: npm ci
|
2020-12-18 00:28:27 +00:00
|
|
|
|
Build/Test Tools: Switch to always running the tests via Composer.
Previously the tests were run via a PHPUnit Phar file for PHP 5.6–7.4, with PHP 8.0 using a Composer-installed version of PHPUnit.
Running the tests via a Phar without the need for a `composer install` is (marginally) faster in overall build time, however, this commit is part of a larger chain of changes which will make the test suite PHPUnit cross-version compatible.
With an eye on those upcoming changes, which will allow us to run the tests on the most appropriate PHPUnit version for each supported PHP version, it is opportune to switch to using a Composer-installed version of PHPUnit for all PHP versions supported by WordPress. Previously this was not possible without additional conditional `update` commands being run, due to the `composer.lock` file being in place and being locked at PHPUnit 7.5.20.
Switching over to using the Composer-installed PHPUnit version, with that PHPUnit version adjusting based on the PHP version, allows for some minor simplifications in the GitHub Actions script.
This means we need additional measures to make sure that the Composer cache file does not go too far out of date as that would significantly slow down the builds.
By adding a "Last Monday" date to the cache key, in combination with the pre-existing OS, PHP version and the hash of the `composer.json` file, we can guarantee that:
1. There will be a cache created for each OS/PHP combination.
2. These caches will be replaced whenever a change is made to the `composer.json` file.
3. These caches will be replaced every Monday of each week ensuring that the cache file does not go too far out of date.
Note: The NPM script `test:php` is now no longer needed during the builds. However, to prevent breaking the workflow of contributors who may be used to having the command available, the command remains available.
In a future iteration we may be able to replace the caching of the Composer dependencies with the Composer cache action as offered on the GitHub marketplace, which would further simplify the script.
Follow-up to [42960], [46290], [47881], [48957], [49037], [51543], [51544].
Props jrf, desrosj.
Fixes #47381.
git-svn-id: https://develop.svn.wordpress.org/trunk@51545 602fd350-edb4-49c9-b593-d223f7449a82
2021-08-04 19:48:56 +00:00
|
|
|
# This date is used to ensure that the Composer cache is refreshed 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 "::set-output name=date::$(/bin/date -u --date='last Mon' "+%F")"
|
|
|
|
|
|
|
|
- name: Get Composer cache directory
|
|
|
|
id: composer-cache
|
|
|
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
|
|
|
|
|
|
|
- name: Cache Composer dependencies
|
|
|
|
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 }}-date-${{ steps.get-date.outputs.date }}-composer-${{ hashFiles('**/composer.json') }}
|
|
|
|
|
|
|
|
- name: Install Composer dependencies
|
|
|
|
run: |
|
|
|
|
docker-compose run --rm php composer --version
|
|
|
|
|
|
|
|
# Install using `composer update` as there is no `composer.lock` file.
|
|
|
|
docker-compose run --rm php composer update
|
|
|
|
|
2020-12-18 00:28:27 +00:00
|
|
|
- name: Docker debug information
|
|
|
|
run: |
|
|
|
|
docker -v
|
|
|
|
docker-compose -v
|
|
|
|
|
|
|
|
- name: Start Docker environment
|
|
|
|
run: |
|
|
|
|
npm run env:start
|
|
|
|
|
|
|
|
- name: General debug information
|
|
|
|
run: |
|
|
|
|
npm --version
|
|
|
|
node --version
|
|
|
|
curl --version
|
|
|
|
git --version
|
|
|
|
svn --version
|
|
|
|
|
|
|
|
- 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 tests as a single site
|
2021-03-26 15:09:19 +00:00
|
|
|
if: ${{ ! matrix.multisite }}
|
2021-09-24 16:54:42 +00:00
|
|
|
run: npm run test:php -- --verbose -c phpunit.xml.dist --coverage-clover wp-code-coverage-single-clover-${{ github.sha }}.xml
|
2020-12-18 00:28:27 +00:00
|
|
|
|
2021-07-06 18:36:46 +00:00
|
|
|
- name: Ensure version-controlled files are not modified during the tests
|
|
|
|
run: git diff --exit-code
|
|
|
|
|
2021-01-04 19:46:34 +00:00
|
|
|
- name: Upload single site report to Codecov
|
2021-03-26 15:09:19 +00:00
|
|
|
if: ${{ ! matrix.multisite }}
|
2021-03-03 20:29:04 +00:00
|
|
|
uses: codecov/codecov-action@e156083f13aff6830c92fc5faa23505779fbf649 # v1.2.1
|
2020-12-23 18:17:51 +00:00
|
|
|
with:
|
|
|
|
file: wp-code-coverage-single-clover-${{ github.sha }}.xml
|
|
|
|
flags: single,php
|
|
|
|
|
2020-12-18 00:28:27 +00:00
|
|
|
- name: Run tests as a multisite install
|
2021-03-26 15:09:19 +00:00
|
|
|
if: ${{ matrix.multisite }}
|
2021-09-24 16:54:42 +00:00
|
|
|
run: npm run test:php -- --verbose -c tests/phpunit/multisite.xml --coverage-clover wp-code-coverage-multisite-clover-${{ github.sha }}.xml
|
2020-12-23 18:17:51 +00:00
|
|
|
|
2021-07-06 18:36:46 +00:00
|
|
|
- name: Ensure version-controlled files are not modified during the tests
|
|
|
|
run: git diff --exit-code
|
|
|
|
|
2021-01-04 19:46:34 +00:00
|
|
|
- name: Upload multisite report to Codecov
|
2021-03-26 15:09:19 +00:00
|
|
|
if: ${{ matrix.multisite }}
|
2021-03-03 20:29:04 +00:00
|
|
|
uses: codecov/codecov-action@e156083f13aff6830c92fc5faa23505779fbf649 # v1.2.1
|
2020-12-23 18:17:51 +00:00
|
|
|
with:
|
|
|
|
file: wp-code-coverage-multisite-clover-${{ github.sha }}.xml
|
|
|
|
flags: multisite,php
|
2021-10-20 14:40:47 +00:00
|
|
|
|
|
|
|
slack-notifications:
|
|
|
|
name: Slack Notifications
|
|
|
|
uses: WordPress/wordpress-develop/.github/workflows/slack-notifications.yml@master
|
|
|
|
needs: [ test-coverage-report ]
|
2021-10-25 20:26:45 +00:00
|
|
|
if: ${{ github.repository == 'WordPress/wordpress-develop' && github.event_name != 'pull_request' && always() }}
|
2021-10-20 19:25:12 +00:00
|
|
|
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 }}
|