Skip to content

Improve consent tool integrations #38

Improve consent tool integrations

Improve consent tool integrations #38

Workflow file for this run

name: CI
on:
push:
branches:
- main
- master
pull_request:
workflow_dispatch:
permissions:
contents: read
jobs:
conventions:
name: Repository conventions
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Enforce repository conventions
run: make conventions
quality:
name: Static and dependency analysis
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup PHP
uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # v2
with:
php-version: '8.2'
tools: composer:v2
coverage: none
- name: Validate Composer metadata
working-directory: plugins/basicrum
run: composer validate --strict
- name: Audit locked dependencies
working-directory: plugins/basicrum
run: composer audit --locked
- name: Install dependencies
working-directory: plugins/basicrum
run: composer install --no-interaction --prefer-dist
- name: Static analysis
working-directory: plugins/basicrum
run: composer analyse
translations:
name: Translation catalogs
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup PHP and WP-CLI
uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # v2
with:
php-version: '8.2'
tools: wp-cli:2.12.0
coverage: none
- name: Regenerate translation catalogs
run: sh tools/update-translations.sh plugins/basicrum
- name: Check for stale translation artifacts
run: git diff --exit-code -- plugins/basicrum/languages
javascript:
name: JavaScript loader behavior
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Node.js
uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
with:
node-version-file: .nvmrc
cache: npm
cache-dependency-path: package-lock.json
- name: Install JavaScript dependencies
run: npm ci
- name: Install Chromium
run: npx playwright install --with-deps chromium
- name: Test JavaScript loaders
run: npm run test:js
woocommerce-e2e:
name: WooCommerce E2E page types
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Run WooCommerce E2E suite
run: make woocommerce-e2e
- name: Upload WooCommerce E2E diagnostics
if: failure()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: woocommerce-e2e-diagnostics
path: test-results/woocommerce-e2e
if-no-files-found: ignore
unit:
name: Unit (PHP ${{ matrix.php }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php: ['7.4', '8.0', '8.1', '8.2', '8.3', '8.4', '8.5']
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup PHP
uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # v2
with:
php-version: ${{ matrix.php }}
tools: composer:v2
coverage: none
- name: Install dependencies
working-directory: plugins/basicrum
run: composer install --no-interaction --prefer-dist
- name: PHP syntax lint
working-directory: plugins/basicrum
run: composer lint:php
- name: Coding standards
working-directory: plugins/basicrum
run: composer lint
- name: Unit tests
working-directory: plugins/basicrum
run: ./vendor/bin/phpunit --configuration phpunit.xml
integration:
name: Integration (PHP ${{ matrix.php }}, WP ${{ matrix.wp }})
runs-on: ubuntu-latest
needs: unit
continue-on-error: ${{ matrix.experimental }}
services:
mysql:
image: mysql:8.0
env:
MYSQL_ROOT_PASSWORD: root
MYSQL_ROOT_HOST: '%'
ports:
- 3306:3306
options: >-
--health-cmd="mysqladmin ping -h localhost -proot"
--health-interval=10s
--health-timeout=5s
--health-retries=5
strategy:
fail-fast: false
matrix:
include:
- php: '7.4'
wp: '6.0'
experimental: false
- php: '8.0'
wp: '6.0'
experimental: false
- php: '8.4'
wp: '7.0'
experimental: false
- php: '8.5'
wp: '7.0'
experimental: false
- php: '8.5'
wp: 'trunk'
experimental: true
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup PHP
uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # v2
with:
php-version: ${{ matrix.php }}
tools: composer:v2
coverage: none
- name: Install dependencies
working-directory: plugins/basicrum
run: composer install --no-interaction --prefer-dist
- name: Configure MySQL authentication
run: |
docker exec "${{ job.services.mysql.id }}" mysql --protocol=socket --user=root --password=root \
--execute="ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';"
- name: Install WordPress test library
run: |
set -e
sudo apt-get update
sudo apt-get install -y default-mysql-client subversion
bash tools/install-wp-tests.sh wordpress_test root root 127.0.0.1:3306 ${{ matrix.wp }}
- name: Integration tests
working-directory: plugins/basicrum
env:
WP_TESTS_DIR: /tmp/wordpress-tests-lib
run: ./vendor/bin/phpunit --configuration phpunit-with-integration.xml
release-artifact:
name: Release ZIP smoke test
runs-on: ubuntu-latest
needs:
- conventions
- quality
- translations
- javascript
- woocommerce-e2e
- unit
- integration
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup release PHP
uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # v2
with:
php-version: '7.4'
tools: composer:v2
coverage: none
- name: Install release tools
run: |
sudo apt-get update
sudo apt-get install -y rsync zip unzip
- name: Build and inspect release artifact
run: sh tools/build-release.sh
- name: Install and test packaged plugin
run: sh tools/smoke-test-release.sh release/basicrum.zip
- name: Upload release artifact
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: basicrum-release
path: |
release/basicrum.zip
release/basicrum.zip.sha256
if-no-files-found: error