NEXT-00000 - Test split in prepare-release workflow #72
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 for ${{ matrix.suite }}" | |
continue-on-error: ${{ !matrix.stable }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
suite: | |
# some suites are merged to reduce the number of jobs | |
- integration | |
- content | |
- framework | |
- unit | |
- migration,migration-tests | |
- devops | |
env: | |
APP_ENV: test | |
DATABASE_URL: mysql://[email protected]: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' | |
COMPOSER_ROOT_VERSION: 6.6.9999999.9999999-dev | |
services: | |
elasticsearch: | |
image: ${{ matrix.suite == 'integration' && 'opensearchproject/opensearch:1' || 'alpine' }} | |
env: | |
discovery.type: single-node | |
plugins.security.disabled: 'true' | |
ports: | |
- "9200:9200" | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Start Default MySQL | |
run: | | |
sudo mv /var/lib/mysql /var/lib/mysql-old | |
sudo mkdir /var/lib/mysql | |
sudo mount -t tmpfs tmpfs /var/lib/mysql -o size=1G | |
sudo -u mysql mysqld --datadir=/var/lib/mysql --default-time-zone=SYSTEM --initialize-insecure | |
sudo systemctl start mysql | |
- 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@v4 | |
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: 8.2 | |
coverage: "${{ matrix.suite == 'unit' && 'xdebug' || '' }}" | |
tools: symfony-cli | |
- name: Strip cs-fixer | |
run: rm -rf vendor-bin | |
- name: Setup Composer | |
run: composer install -o | |
- name: Start Webserver | |
run: symfony server:start -d | |
- name: Install Shopware | |
run: php src/Core/TestBootstrap.php | |
- name: Run PHPUnit | |
if: matrix.suite != 'unit' | |
run: php -d memory_limit=-1 vendor/bin/phpunit --testsuite "${{ matrix.suite }}" | |
- name: Run PHPUnit with coverage | |
if: matrix.suite == 'unit' | |
run: php -d memory_limit=-1 vendor/bin/phpunit --testsuite "${{ matrix.suite }}" --coverage-cobertura coverage.xml | |
- name: Upload coverage | |
uses: codecov/codecov-action@v4 | |
if: matrix.suite == 'unit' | |
with: | |
files: coverage.xml | |
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 | |
COMPOSER_ROOT_VERSION: 6.6.9999999.9999999-dev | |
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@v4 | |
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@v4 | |
with: | |
node-version: 20 | |
- name: Retrieve the cached "node_modules" directory (if present) | |
uses: actions/cache@v4 | |
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 | |
COMPOSER_ROOT_VERSION: 6.6.9999999.9999999-dev | |
steps: | |
- name: Clone platform | |
uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- name: Retrieve the cached "node_modules" directory (if present) | |
uses: actions/cache@v4 | |
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 |