Next 0000/add acceptance workflow #4
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: 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 |