Skip to content

NEXT-0000 - POC php attributes for entities #6078

NEXT-0000 - POC php attributes for entities

NEXT-0000 - POC php attributes for entities #6078

Workflow file for this run

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
- administration,system
- storefront
- content
- framework
- unit
- integration
- migration,migration-tests
env:
APP_ENV: test
DATABASE_URL: mysql://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: ${{ 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
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
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