Create coverage-report.yml #55
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on: | |
push: | |
branches: | |
- main | |
- signature-formtag | |
pull_request: | |
name: Tests | |
env: | |
coverage-php-version: '8.1' | |
coverage-wp-version: '6.4' | |
jobs: | |
test: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
# See: https://make.wordpress.org/core/handbook/references/php-compatibility-and-wordpress-versions/ | |
wordpress-version: ['5.9', '6.0', '6.1', '6.2', '6.3', '6.4'] | |
php-versions: ['7.4', '8.0', '8.1', '8.2'] | |
exclude: | |
- php-versions: '8.0' | |
wordpress-version: '5.9' | |
- php-versions: '8.1' | |
wordpress-version: '5.9' | |
- php-versions: '8.2' | |
wordpress-version: '5.9' | |
- php-versions: '8.0' | |
wordpress-version: '6.0' | |
- php-versions: '8.1' | |
wordpress-version: '6.0' | |
- php-versions: '8.2' | |
wordpress-version: '6.0' | |
- php-versions: '8.0' | |
wordpress-version: '6.1' | |
- php-versions: '8.1' | |
wordpress-version: '6.1' | |
- php-versions: '8.2' | |
wordpress-version: '6.1' | |
name: PHP:${{ matrix.php-versions }} / WP:${{ matrix.wordpress-version }} | |
services: | |
mysql: | |
image: mysql:5.7 | |
env: | |
MYSQL_ALLOW_EMPTY_PASSWORD: false | |
MYSQL_ROOT_PASSWORD: password | |
MYSQL_DATABASE: wordpress | |
ports: | |
- 3306 | |
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php-versions }} | |
tools: php-cs-fixer, composer | |
extensions: pcntl, posix, xdebug | |
env: | |
fail-fast: true | |
- name: Setup Wordpress over phpunit | |
run: bash bin/install-wp-tests.sh wordpress root password 127.0.0.1:${{ job.services.mysql.ports[3306] }} ${{ matrix.wordpress-version }} true | |
- name: Get composer cache directory | |
id: composer-cache | |
run: echo "composer_dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT | |
- name: Setup problem matchers for PHPUnit | |
run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" | |
- name: Remove phpunit-merger | |
if: ${{ matrix.php-versions != env.coverage-php-version && (matrix.wordpress-version != env.coverage-wp-version)}} | |
run: (composer remove --dev nimut/phpunit-merger phpunit/phpunit || true ) | |
- name: Cache composer dependencies | |
uses: actions/cache@v4 | |
with: | |
path: ${{ steps.composer-cache.outputs.composer_dir }} | |
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} | |
restore-keys: ${{ runner.os }}-composer- | |
- name: Only for WP >= 5.9 Install Composer dependencies | |
# See: https://make.wordpress.org/core/2021/09/27/changes-to-the-wordpress-core-php-test-suite/ | |
if: ${{ ( matrix.wordpress-version == '5.9' || matrix.wordpress-version == '6.0' || matrix.wordpress-version == '6.1' || matrix.wordpress-version == '6.2' || matrix.wordpress-version == '6.3' || matrix.wordpress-version == '6.4' ) }} | |
# run: composer install --no-progress --prefer-dist --optimize-autoloader --ignore-platform-reqs | |
# Changed to stay with PHPUnit 9 | |
run: (composer remove --dev phpunit/phpunit || true ) && composer update --dev yoast/phpunit-polyfills --with-dependencies && composer install --no-progress --prefer-dist --optimize-autoloader --ignore-platform-reqs | |
- name: When using PHP 8 and WP <= 5.8 | |
# See: https://core.trac.wordpress.org/ticket/50902 | |
if: ${{ matrix.php-versions == '8.0' && (matrix.wordpress-version == '5.6' || matrix.wordpress-version == '5.7' || matrix.wordpress-version == '5.8' )}} | |
run: composer install --no-progress --prefer-dist --optimize-autoloader --ignore-platform-reqs | |
#- name: Install Composer dependencies | |
# Rest of the versions | |
#if: ${{ matrix.php-versions != '8.0' }} | |
#run: composer install --no-progress --prefer-dist --optimize-autoloader | |
- name: Run the tests | |
if: ${{ matrix.php-versions != env.coverage-php-version && (matrix.wordpress-version != env.coverage-wp-version)}} | |
run: vendor/bin/phpunit --debug | |
- name: When using PHP 8.1 and WP 6.4 - Run the tests and generate coverage report (single) | |
if: ${{ matrix.php-versions == env.coverage-php-version && (matrix.wordpress-version == env.coverage-wp-version)}} | |
run: vendor/bin/phpunit --debug --coverage-php coverage/single.cov | |
- name: When using PHP 8.1 and WP 6.4 - Run the tests and generate coverage report (multisite) | |
if: ${{ matrix.php-versions == env.coverage-php-version && (matrix.wordpress-version == env.coverage-wp-version)}} | |
run: vendor/bin/phpunit --debug -c tests/phpunit/multisite.xml --coverage-php=coverage/multisite.cov | |
- name: Generate coverage merged report | |
if: ${{ matrix.php-versions == env.coverage-php-version && (matrix.wordpress-version == env.coverage-wp-version)}} | |
run: vendor/bin/phpunit-merger coverage coverage/ --html=coverage-html/ coverage/coverage-merged.cov | |
sync-trunk: | |
name: Sync trunk with main | |
runs-on: ubuntu-latest | |
needs: test | |
if: github.ref == 'refs/heads/main' | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: 7.4 | |
tools: composer | |
env: | |
fail-fast: true | |
- name: Sync with SVN | |
run: | | |
make svnsync | |
- name: Push trunk to WordPress Plugin directory | |
env: | |
SVN_USERNAME: ${{ secrets.SVN_USERNAME }} | |
SVN_PASSWORD: ${{ secrets.SVN_PASSWORD }} | |
run: | | |
make svnpush |