Merge pull request #264 from Setono/upgrade #996
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: "build" | |
on: | |
push: | |
branches: | |
- "0.*.x" | |
paths-ignore: | |
- "**/*.md" | |
pull_request: | |
paths-ignore: | |
- "**/*.md" | |
workflow_dispatch: ~ | |
env: | |
APP_ENV: "test" | |
DATABASE_URL: "mysql://root:[email protected]/sylius?serverVersion=8.0" | |
PHP_EXTENSIONS: "intl, mbstring" | |
jobs: | |
coding-standards: | |
name: "Coding Standards (PHP ${{ matrix.php-version }} | Dependency versions: ${{ matrix.dependencies }})" | |
runs-on: "ubuntu-latest" | |
strategy: | |
matrix: | |
php-version: | |
- "8.1" # Always use the lowest version of PHP since a higher version would create actual syntax errors in lower versions | |
dependencies: | |
- "highest" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4" | |
- name: "Setup PHP, with composer and extensions" | |
uses: "shivammathur/setup-php@v2" | |
with: | |
php-version: "${{ matrix.php-version }}" | |
extensions: "${{ env.PHP_EXTENSIONS }}" | |
coverage: "none" | |
- name: "Install composer dependencies" | |
uses: "ramsey/composer-install@v3" | |
with: | |
dependency-versions: "${{ matrix.dependencies }}" | |
- name: "Validate composer" | |
run: "composer validate --strict" | |
- name: "Check composer normalized" | |
run: "composer normalize --dry-run" | |
- name: "Check style" | |
run: "composer check-style" | |
- name: "Lint yaml files" | |
run: "(cd tests/Application && bin/console lint:yaml ../../src/Resources)" | |
- name: "Lint twig files" | |
run: "(cd tests/Application && bin/console lint:twig ../../src/Resources)" | |
dependency-analysis: | |
name: "Dependency Analysis (PHP ${{ matrix.php-version }} | Dependency versions: ${{ matrix.dependencies }} | Symfony: ${{ matrix.symfony }})" | |
runs-on: "ubuntu-latest" | |
strategy: | |
matrix: | |
php-version: | |
- "8.1" | |
- "8.2" | |
dependencies: | |
- "lowest" | |
- "highest" | |
symfony: | |
- "~5.4.0" | |
- "~6.4.0" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4" | |
- name: "Setup PHP, with composer and extensions" | |
uses: "shivammathur/setup-php@v2" | |
with: | |
coverage: "none" | |
extensions: "${{ env.PHP_EXTENSIONS }}" | |
php-version: "${{ matrix.php-version }}" | |
tools: "composer-require-checker, composer-unused, flex" | |
- name: "Remove require-dev section in composer.json" | |
run: "composer config --unset require-dev" | |
- name: "Install composer dependencies" | |
uses: "ramsey/composer-install@v3" | |
env: | |
SYMFONY_REQUIRE: "${{ matrix.symfony }}" | |
with: | |
dependency-versions: "${{ matrix.dependencies }}" | |
- name: "Run maglnet/composer-require-checker" | |
run: "composer-require-checker check --config-file=$(pwd)/composer-require-checker.json" | |
- name: "Run composer-unused/composer-unused" | |
run: "composer-unused" | |
static-code-analysis: | |
name: "Static Code Analysis (PHP ${{ matrix.php-version }} | Dependency versions: ${{ matrix.dependencies }} | Symfony: ${{ matrix.symfony }})" | |
runs-on: "ubuntu-latest" | |
strategy: | |
matrix: | |
php-version: | |
- "8.1" | |
- "8.2" | |
dependencies: | |
- "lowest" | |
- "highest" | |
symfony: | |
- "~5.4.0" | |
- "~6.4.0" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4" | |
- name: "Setup PHP, with composer and extensions" | |
uses: "shivammathur/setup-php@v2" | |
with: | |
coverage: "none" | |
extensions: "${{ env.PHP_EXTENSIONS }}" | |
php-version: "${{ matrix.php-version }}" | |
tools: "flex" | |
- name: "Remove sylius/sylius from composer.json" | |
run: "composer remove --dev --no-update --no-plugins --no-scripts sylius/sylius" | |
- name: "Install composer dependencies" | |
uses: "ramsey/composer-install@v3" | |
env: | |
SYMFONY_REQUIRE: "${{ matrix.symfony }}" | |
with: | |
dependency-versions: "${{ matrix.dependencies }}" | |
- name: "Static analysis" | |
run: "vendor/bin/psalm --php-version=${{ matrix.php-version }}" | |
unit-tests: | |
name: "Unit tests (PHP ${{ matrix.php-version }} | Dependency versions: ${{ matrix.dependencies }} | Symfony: ${{ matrix.symfony }})" | |
runs-on: "ubuntu-latest" | |
strategy: | |
matrix: | |
php-version: | |
- "8.1" | |
- "8.2" | |
dependencies: | |
- "highest" | |
symfony: | |
- "~5.4.0" | |
- "~6.4.0" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4" | |
- name: "Setup PHP, with composer and extensions" | |
uses: "shivammathur/setup-php@v2" | |
with: | |
coverage: "none" | |
extensions: "${{ env.PHP_EXTENSIONS }}" | |
php-version: "${{ matrix.php-version }}" | |
tools: "flex" | |
- name: "Remove sylius/sylius from composer.json" | |
run: "composer remove --dev --no-update --no-plugins --no-scripts sylius/sylius" | |
- name: "Install composer dependencies" | |
uses: "ramsey/composer-install@v3" | |
env: | |
SYMFONY_REQUIRE: "${{ matrix.symfony }}" | |
with: | |
dependency-versions: "${{ matrix.dependencies }}" | |
- name: "Run phpunit" | |
run: "composer phpunit" | |
integration-tests: | |
name: "Integration tests (PHP ${{ matrix.php-version }} | Dependency versions: ${{ matrix.dependencies }} | Symfony: ${{ matrix.symfony }})" | |
runs-on: "ubuntu-latest" | |
strategy: | |
matrix: | |
php-version: | |
- "8.1" | |
- "8.2" | |
dependencies: | |
- "highest" | |
symfony: | |
- "~6.4" | |
steps: | |
- name: "Start MySQL" | |
run: "sudo /etc/init.d/mysql start" | |
- name: "Checkout" | |
uses: "actions/checkout@v4" | |
- name: "Setup PHP, with composer and extensions" | |
uses: "shivammathur/setup-php@v2" | |
with: | |
coverage: "none" | |
extensions: "${{ env.PHP_EXTENSIONS }}" | |
php-version: "${{ matrix.php-version }}" | |
tools: "flex,symfony" | |
- name: "Setup node" | |
uses: "actions/setup-node@v4" | |
with: | |
node-version: "18" | |
- name: "Install composer dependencies" | |
uses: "ramsey/composer-install@v3" | |
env: | |
SYMFONY_REQUIRE: "${{ matrix.symfony }}" | |
with: | |
dependency-versions: "${{ matrix.dependencies }}" | |
- name: "Install wkhtmltopdf" | |
run: "sudo apt-get install wkhtmltopdf" | |
- name: "Lint container" | |
run: '(cd tests/Application && bin/console lint:container)' | |
- name: "Create database" | |
run: "(cd tests/Application && bin/console doctrine:database:create)" | |
- name: "Create database schema" | |
run: "(cd tests/Application && bin/console doctrine:schema:create)" | |
- name: "Validate Doctrine mapping" | |
run: "(cd tests/Application && bin/console doctrine:schema:validate)" | |
- name: "Get Yarn cache directory" | |
id: "yarn-cache" | |
run: "echo \"::set-output name=dir::$(yarn cache dir)\"" | |
- name: "Cache Yarn" | |
uses: "actions/cache@v2" | |
with: | |
path: "${{ steps.yarn-cache.outputs.dir }}" | |
key: "yarn-${{ hashFiles('**/package.json **/yarn.lock') }}" | |
restore-keys: "yarn-" | |
- name: "Install JS dependencies" | |
run: "(cd tests/Application && yarn install)" | |
- name: "Install assets" | |
run: "(cd tests/Application && bin/console assets:install public -vvv)" | |
- name: "Build assets" | |
run: "(cd tests/Application && yarn build)" | |
- name: "Output PHP version for Symfony CLI" | |
run: "php -v | head -n 1 | awk '{ print $2 }' > .php-version" | |
- name: "Install certificates" | |
run: "symfony server:ca:install" | |
- name: "Run Chrome Headless" | |
run: "google-chrome-stable --enable-automation --disable-background-networking --no-default-browser-check --no-first-run --disable-popup-blocking --disable-default-apps --allow-insecure-localhost --disable-translate --disable-extensions --no-sandbox --enable-features=Metal --headless --remote-debugging-port=9222 --window-size=2880,1800 --proxy-server='direct://' --proxy-bypass-list='*' http://127.0.0.1 > /dev/null 2>&1 &" | |
- name: "Wait for Chrome to start" | |
run: | | |
until curl -s http://127.0.0.1:9222/json/version | grep "Browser" > /dev/null 2>&1 | |
do | |
sleep 1 | |
done | |
- name: "Run webserver" | |
run: "(cd tests/Application && symfony server:start --port=8080 --dir=public --daemon)" | |
- name: "Wait for webserver to start" | |
run: | | |
until symfony server:list | grep /public > /dev/null 2>&1 | |
do | |
sleep 1 | |
done | |
- name: "Run behat" | |
run: "vendor/bin/behat --colors --strict -vvv --no-interaction || vendor/bin/behat --colors --strict -vvv --no-interaction --rerun" | |
- name: "Upload Behat logs" | |
uses: "actions/upload-artifact@v4" | |
if: "failure()" | |
with: | |
name: "Behat logs" | |
path: "etc/build/" | |
if-no-files-found: "ignore" | |
code-coverage: | |
name: "Code Coverage (PHP ${{ matrix.php-version }} | Dependency versions: ${{ matrix.dependencies }})" | |
runs-on: "ubuntu-latest" | |
strategy: | |
matrix: | |
php-version: | |
- "8.2" | |
dependencies: | |
- "highest" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4" | |
- name: "Setup PHP, with composer and extensions" | |
uses: "shivammathur/setup-php@v2" | |
with: | |
coverage: "pcov" | |
extensions: "${{ env.PHP_EXTENSIONS }}" | |
php-version: "${{ matrix.php-version }}" | |
- name: "Install composer dependencies" | |
uses: "ramsey/composer-install@v3" | |
with: | |
dependency-versions: "${{ matrix.dependencies }}" | |
- name: "Collect code coverage with pcov and phpunit/phpunit" | |
run: "vendor/bin/phpunit --coverage-clover=.build/logs/clover.xml" | |
- name: "Send code coverage report to Codecov.io" | |
env: | |
CODECOV_TOKEN: "${{ secrets.CODECOV_TOKEN }}" | |
run: "bash <(curl -s https://codecov.io/bash)" |