Skip to content

Next 0000/add acceptance workflow #4

Next 0000/add acceptance workflow

Next 0000/add acceptance workflow #4

Workflow file for this run

name: Unit
on:
push:
branches:
- trunk
pull_request:
jobs:
php:
name: "PHPUnit with PHP ${{ matrix.php-version }}"
continue-on-error: ${{ !matrix.stable }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- php-version: 8.2
stable: true
- php-version: 8.3
stable: false
- php-version: 8.4
stable: false
env:
TEST_SUITES: 'administration storefront checkout content framework profiling migration system elasticsearch unit integration migration-tests'
APP_ENV: test
DATABASE_URL: mysql://root:root@127.0.0.1:3306/root
APP_URL: http://localhost:8000
APP_SECRET: def00000bb5acb32b54ff8ee130270586eec0e878f7337dc7a837acc31d3ff00f93a56b595448b4b29664847dd51991b3314ff65aeeeb761a133b0ec0e070433bff08e48
OPENSEARCH_URL: 127.0.0.1:9200
BLUE_GREEN_DEPLOYMENT: 1
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: 'true'
services:
elasticsearch:
image: elastic/elasticsearch:7.8.0
env:
discovery.type: single-node
ports:
- "9200:9200"
database:
image: mysql:8.0
env:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: root
options: '--mount="type=tmpfs,destination=/var/lib/mysql" --health-cmd="mysqladmin ping -h 127.0.0.1" --health-interval=5s --health-timeout=2s --health-retries=3'
ports:
- "3306:3306"
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Get Composer Cache Directory
id: composer-cache
run: |
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache Composer Archives
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
restore-keys: |
${{ runner.os }}-composer-
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
coverage: none
- name: Configure for Unstable
run: |
composer config platform.php 8.2.99
composer config -d vendor-bin/cs-fixer platform.php 8.2.99
composer config -d vendor-bin/rector platform.php 8.2.99
composer config -d vendor-bin/roave-backward-compatibility-check platform.php 8.2.99
if: matrix.stable == false
- name: Setup Composer
run: |
composer install -o
- name: Run PHPUnit
run: |
for TEST_SUITE in $TEST_SUITES; do php -d memory_limit=-1 vendor/bin/phpunit --configuration phpunit.xml.dist --exclude-group "needsWebserver,quarantined" --testsuite "$TEST_SUITE"; done
admin:
runs-on: ubuntu-latest
name: "Jest Admin"
env:
APP_ENV: prod
DATABASE_URL: mysql://root:root@database:3306/root
APP_URL: http://localhost:8000
APP_SECRET: def00000bb5acb32b54ff8ee130270586eec0e878f7337dc7a837acc31d3ff00f93a56b595448b4b29664847dd51991b3314ff65aeeeb761a133b0ec0e070433bff08e48
OPENSEARCH_URL: elasticsearch:9200
BLUE_GREEN_DEPLOYMENT: 1
steps:
- name: Get Composer Cache Directory
id: composer-cache
run: |
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache Composer Archives
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
restore-keys: |
${{ runner.os }}-composer-
- name: Clone platform
uses: actions/checkout@v4
- uses: actions/setup-node@v3
with:
node-version: 20
- name: Retrieve the cached "node_modules" directory (if present)
uses: actions/cache@v3
id: node-cache
with:
path: src/Administration/Resources/app/administration/node_modules
key: admin-node-modules-${{ runner.os }}-${{ hashFiles('src/Administration/Resources/app/administration/package-lock.json') }}
- name: Install dependencies (if the cached directory was not found)
if: steps.node-cache.outputs.cache-hit != 'true'
run: npm --prefix src/Administration/Resources/app/administration ci --no-audit --prefer-offline
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
- name: Setup Composer
run: composer install
- name: Generate Schema
run: |
composer run framework:schema:dump
composer run npm:admin run unit-setup
- name: Run Jest Admin
run: npm --prefix src/Administration/Resources/app/administration run unit -- --silent
storefront:
name: "Jest Storefront"
runs-on: ubuntu-latest
env:
APP_ENV: prod
DATABASE_URL: mysql://root:root@database:3306/root
APP_URL: http://localhost:8000
APP_SECRET: def00000bb5acb32b54ff8ee130270586eec0e878f7337dc7a837acc31d3ff00f93a56b595448b4b29664847dd51991b3314ff65aeeeb761a133b0ec0e070433bff08e48
OPENSEARCH_URL: elasticsearch:9200
BLUE_GREEN_DEPLOYMENT: 1
steps:
- name: Clone platform
uses: actions/checkout@v4
- uses: actions/setup-node@v3
with:
node-version: 20
- name: Retrieve the cached "node_modules" directory (if present)
uses: actions/cache@v3
id: node-cache
with:
path: src/Storefront/Resources/app/storefront/node_modules
key: storefront-node-modules-${{ runner.os }}-${{ hashFiles('src/Storefront/Resources/app/storefront/package-lock.json') }}
- name: Install dependencies (if the cached directory was not found)
if: steps.node-cache.outputs.cache-hit != 'true'
run: npm --prefix src/Storefront/Resources/app/storefront ci --no-audit --prefer-offline
- name: Run Jest Storefront
run: npm --prefix src/Storefront/Resources/app/storefront run unit -- --silent