Merge pull request #2951 from skaut/dependabot/composer/squizlabs/php… #5753
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/[email protected] | |
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/[email protected] | |
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/[email protected] | |
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/[email protected] | |
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/[email protected] | |
with: | |
packages: subversion | |
version: ${{ env.cache-version }} | |
- name: "Setup PHP" | |
uses: shivammathur/[email protected] | |
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/[email protected] | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
fail_ci_if_error: true |