Merge pull request #2929 from skaut/dependabot/npm_and_yarn/prettier-… #5699
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
name: "CI" | |
on: | |
push: | |
branches: "*" | |
pull_request: | |
env: | |
php-version: 8.2 | |
cache-version: 1 | |
jobs: | |
platform-check: | |
name: "PHP 5.6 compatibility" | |
runs-on: ubuntu-latest | |
steps: | |
- name: "Checkout" | |
uses: actions/checkout@v4 | |
- name: "Setup PHP" | |
uses: shivammathur/setup-php@2.31.1 | |
with: | |
php-version: 5.6 | |
coverage: none | |
- name: "Check dependency compatibility" | |
run: | | |
composer check-platform-reqs --no-dev | |
build: | |
name: "Build" | |
runs-on: ubuntu-latest | |
steps: | |
- name: "Checkout" | |
uses: actions/checkout@v4 | |
- name: "Setup PHP" | |
uses: shivammathur/setup-php@2.31.1 | |
with: | |
php-version: ${{ env.php-version }} | |
coverage: none | |
- name: "Cache Composer dependencies" | |
uses: actions/cache@v4 | |
with: | |
path: "~/.composer/cache" | |
key: composer-dependencies-${{ runner.os }}-${{ env.cache-version }}-${{ hashFiles('composer.json') }} | |
restore-keys: | | |
composer-dependencies-${{ runner.os }}-${{ env.cache-version }}-${{ hashFiles('composer.json') }} | |
composer-dependencies-${{ runner.os }}-${{ env.cache-version }}- | |
- name: "Install Composer dependencies" | |
run: | | |
composer install -n --prefer-dist | |
- name: "Cache NPM dependencies" | |
uses: actions/cache@v4 | |
with: | |
path: "~/.npm" | |
key: npm-dependencies-${{ runner.os }}-${{ env.cache-version }}-${{ hashFiles('package.json') }} | |
restore-keys: | | |
npm-dependencies-${{ runner.os }}-${{ env.cache-version }}-${{ hashFiles('package.json') }} | |
npm-dependencies-${{ runner.os }}-${{ env.cache-version }}- | |
- name: "Install NPM dependencies" | |
run: | | |
npm ci | |
- name: "Build" | |
run: | | |
npm run build | |
- name: "Upload artifact" | |
uses: actions/upload-artifact@v4 | |
with: | |
name: "build-artifact" | |
path: dist | |
lint: | |
name: "Lint" | |
runs-on: ubuntu-latest | |
needs: build | |
env: | |
php-extensions: ast | |
steps: | |
- name: "Checkout" | |
uses: actions/checkout@v4 | |
- name: "Setup PHP extension caching" | |
id: extcache | |
uses: shivammathur/cache-extensions@1.11.1 | |
with: | |
php-version: ${{ env.php-version }} | |
extensions: ${{ env.php-extensions }} | |
key: php-extensions-${{ runner.os }}-${{ env.cache-version }} | |
- name: "Cache extensions" | |
uses: actions/cache@v4 | |
with: | |
path: ${{ steps.extcache.outputs.dir }} | |
key: ${{ steps.extcache.outputs.key }} | |
restore-keys: ${{ steps.extcache.outputs.key }} | |
- name: "Setup PHP" | |
uses: shivammathur/setup-php@2.31.1 | |
with: | |
php-version: ${{ env.php-version }} | |
extensions: ${{ env.php-extensions }} | |
coverage: none | |
- name: "Cache Composer dependencies" | |
uses: actions/cache@v4 | |
with: | |
path: "~/.composer/cache" | |
key: composer-dependencies-${{ runner.os }}-${{ env.cache-version }}-${{ hashFiles('composer.json') }} | |
restore-keys: | | |
composer-dependencies-${{ runner.os }}-${{ env.cache-version }}-${{ hashFiles('composer.json') }} | |
composer-dependencies-${{ runner.os }}-${{ env.cache-version }}- | |
- name: "Install Composer dependencies" | |
run: | | |
composer install -n --prefer-dist | |
- name: "Cache NPM dependencies" | |
uses: actions/cache@v4 | |
with: | |
path: "~/.npm" | |
key: npm-dependencies-${{ runner.os }}-${{ env.cache-version }}-${{ hashFiles('package.json') }} | |
restore-keys: | | |
npm-dependencies-${{ runner.os }}-${{ env.cache-version }}-${{ hashFiles('package.json') }} | |
npm-dependencies-${{ runner.os }}-${{ env.cache-version }}- | |
- name: "Install NPM dependencies" | |
run: | | |
npm ci | |
- name: "Download build artifact" | |
uses: actions/download-artifact@v4 | |
with: | |
name: "build-artifact" | |
path: dist | |
- name: "Lint" | |
run: | | |
npm run lint | |
unit: | |
name: "Test" | |
runs-on: ubuntu-latest | |
needs: build | |
strategy: | |
matrix: | |
versions: [{php: "5.6", wordpress: "4.9"}, {php: "5.6", wordpress: "5.9"}, {php: "5.6", wordpress: "6.2"}, {php: "7.4", wordpress: "latest"}, {php: "8.2", wordpress: "latest"}] | |
services: | |
mysql: | |
image: mysql:5 | |
ports: | |
- 3306:3306 | |
env: | |
MYSQL_ALLOW_EMPTY_PASSWORD: yes | |
steps: | |
- name: "Checkout" | |
uses: actions/checkout@v4 | |
- name: "Install SVN" | |
uses: awalsh128/cache-apt-pkgs-action@v1.4.2 | |
with: | |
packages: subversion | |
version: ${{ env.cache-version }} | |
- name: "Setup PHP" | |
uses: shivammathur/setup-php@2.31.1 | |
with: | |
php-version: ${{ matrix.versions.php }} | |
coverage: pcov | |
- name: "Cache Composer dependencies" | |
uses: actions/cache@v4 | |
with: | |
path: "~/.composer/cache" | |
key: composer-dependencies-test-${{ runner.os }}-${{ env.cache-version }}-${{ hashFiles('composer.json') }} | |
restore-keys: | | |
composer-dependencies-test-${{ runner.os }}-${{ env.cache-version }}-${{ hashFiles('composer.json') }} | |
composer-dependencies-test-${{ runner.os }}-${{ env.cache-version }}- | |
- name: "Move phpunit to non-dev Composer dependencies" | |
run: | | |
composer -n require --no-update yoast/phpunit-polyfills phpunit/phpunit:"^5.7 || ^6.5 || ^7.5 || ^8.5 || ^9.6" | |
- name: "Remove all non-dev Composer dependencies" | |
run: | | |
composer remove --dev --no-update $(composer show -s | sed -n '/requires (dev)$/,/^$/p' | grep -v 'requires (dev)' | cut -d ' ' -f1 | tr '\n' ' ') | |
- name: "Install Composer dependencies" | |
run: | | |
composer update -n --prefer-dist | |
- name: "Cache NPM dependencies" | |
uses: actions/cache@v4 | |
with: | |
path: "~/.npm" | |
key: npm-dependencies-${{ runner.os }}-${{ env.cache-version }}-${{ hashFiles('package.json') }} | |
restore-keys: | | |
npm-dependencies-${{ runner.os }}-${{ env.cache-version }}-${{ hashFiles('package.json') }} | |
npm-dependencies-${{ runner.os }}-${{ env.cache-version }}- | |
- name: "Install NPM dependencies" | |
run: | | |
npm ci | |
- name: "Download build artifact" | |
uses: actions/download-artifact@v4 | |
with: | |
name: "build-artifact" | |
path: dist | |
- name: "Prepare WordPress test environment" | |
run: | | |
./bin/install-wp-tests.sh wordpress_test root '' 127.0.0.1 ${{ matrix.versions.wordpress }} | |
- name: "Run tests" | |
run: | | |
npm run test | |
- name: "Upload coverage results" | |
uses: codecov/codecov-action@v5.0.7 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
fail_ci_if_error: true |