-
Use supported actions version
- uses: actions/checkout@v3
-
PHP setup
- name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: "${{ matrix.php }}" extensions: intl tools: flex, symfony coverage: none
-
Node setup
- name: Setup Node uses: actions/setup-node@v4 with: node-version: "${{ matrix.node }}"
-
Shutdown default MySQL
- name: Shutdown default MySQL run: sudo service mysql stop
-
MySQL setup
- name: Setup MySQL uses: mirromutth/[email protected] with: mysql version: "${{ matrix.mysql }}" mysql root password: "root"
-
Output PHP version for Symfony CLI
- name: Output PHP version for Symfony CLI run: php -v | head -n 1 | awk '{ print $2 }' > .php-version
-
Certificates installation
- name: Install certificates run: symfony server:ca:install
-
Running Chrome Headless
- 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 &
-
Running webserver
- name: Run webserver run: (cd tests/Application && symfony server:start --port=8080 --dir=public --daemon)
-
Getting Composer cache directory
- name: Get Composer cache directory id: composer-cache run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
-
Caching Composer
- name: Cache Composer uses: actions/cache@v4 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-php-${{ matrix.php }}-composer-${{ hashFiles('**/composer.json **/composer.lock') }} restore-keys: | ${{ runner.os }}-php-${{ matrix.php }}-composer-
-
Restricting Sylius version
- name: Restrict Sylius version if: matrix.sylius != '' run: composer require "sylius/sylius:${{ matrix.sylius }}" --no-update --no-scripts --no-interaction
-
Installing PHP dependencies
- name: Install PHP dependencies run: composer install --no-interaction env: SYMFONY_REQUIRE: ${{ matrix.symfony }}
-
Installing Behat driver
- name: Install Behat driver run: vendor/bin/bdi browser:google-chrome drivers
-
Getting Yarn cache directory
- name: Get Yarn cache directory id: yarn-cache run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
-
Caching Yarn
- name: Cache Yarn uses: actions/cache@v4 with: path: ${{ steps.yarn-cache.outputs.dir }} key: ${{ runner.os }}-node-${{ matrix.node }}-yarn-${{ hashFiles('**/package.json **/yarn.lock') }} restore-keys: | ${{ runner.os }}-node-${{ matrix.node }}-yarn-
-
Installing JS dependencies
- name: Install JS dependencies run: | (cd tests/Application && yarn install)
-
Preparing test application database
- name: Prepare test application database run: | (cd tests/Application && bin/console doctrine:database:create -vvv) (cd tests/Application && bin/console doctrine:schema:create -vvv)
-
Preparing test application assets
- name: Prepare test application assets run: | (cd tests/Application && bin/console assets:install public -vvv) (cd tests/Application && yarn build:prod)
-
Preparing test application cache
- name: Prepare test application cache run: (cd tests/Application && bin/console cache:warmup -vvv)
-
Loading fixtures in test application
- name: Load fixtures in test application run: (cd tests/Application && bin/console sylius:fixtures:load -n)
-
Validating composer.json
- name: Validate composer.json run: composer validate --ansi --strict
-
Validating database schema
- name: Validate database schema run: (cd tests/Application && bin/console doctrine:schema:validate)
-
Running PHPSpec
- name: Run PHPSpec run: vendor/bin/phpspec run --ansi -f progress --no-interaction
-
Running PHPUnit
- name: Run PHPUnit run: vendor/bin/phpunit --colors=always
-
Running Behat
- name: Run Behat run: vendor/bin/behat --colors --strict -vvv --no-interaction -f progress || vendor/bin/behat --colors --strict -vvv --no-interaction -f progress --rerun
-
Uploading Behat logs
- name: Upload Behat logs uses: actions/upload-artifact@v3 if: failure() with: name: Behat logs path: etc/build/ if-no-files-found: ignore
-
Sending information regarding failed build to Slack
- name: Failed build Slack notification uses: rtCamp/action-slack-notify@v2 if: ${{ failure() && (GithubBuilds.ref == 'refs/heads/main' || GithubBuilds.ref == 'refs/heads/master') }} env: SLACK_CHANNEL: ${{ secrets.FAILED_BUILD_SLACK_CHANNEL }} SLACK_COLOR: ${{ job.status }} SLACK_ICON: https://github.com/rtCamp.png?size=48 SLACK_MESSAGE: ':x:' SLACK_TITLE: Failed build on ${{ GithubBuilds.event.repository.name }} repository SLACK_USERNAME: ${{ secrets.FAILED_BUILD_SLACK_USERNAME }} SLACK_WEBHOOK: ${{ secrets.FAILED_BUILD_SLACK_WEBHOOK }}
-
Use supported actions version
- uses: actions/checkout@v3
-
PHP setup
- name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: "${{ matrix.php }}" extensions: intl tools: flex, symfony coverage: none
-
Getting Composer cache directory
- name: Get Composer cache directory id: composer-cache run: echo "::set-output name=dir::$(composer config cache-files-dir)"
-
Caching Composer
- name: Cache Composer uses: actions/cache@v4 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-php-${{ matrix.php }}-composer-${{ hashFiles('**/composer.json **/composer.lock') }} restore-keys: | ${{ runner.os }}-php-${{ matrix.php }}-composer-
-
Restricting Symfony version
- name: Restrict Symfony version if: matrix.symfony != '' run: | composer global config --no-plugins allow-plugins.symfony/flex true composer global require --no-progress --no-scripts --no-plugins "symfony/flex:^1.10" composer config extra.symfony.require "${{ matrix.symfony }}"
-
Restricting Sylius version
- name: Restrict Sylius version if: matrix.sylius != '' run: composer require "sylius/sylius:${{ matrix.sylius }}" --no-update --no-scripts --no-interaction
-
Installing PHP dependencies
- name: Install PHP dependencies run: composer install --no-interaction env: SYMFONY_REQUIRE: ${{ matrix.symfony }}
-
Running PHPStan
- name: Run PHPStan src dir run: vendor/bin/phpstan analyse -c phpstan.neon -l 8 src/
-
Running ECS
- name: Run ECS run: vendor/bin/ecs
-
Sending information regarding failed build to Slack
- name: Failed build Slack notification uses: rtCamp/action-slack-notify@v2 if: ${{ failure() && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master') }} env: SLACK_CHANNEL: ${{ secrets.FAILED_BUILD_SLACK_CHANNEL }} SLACK_COLOR: ${{ job.status }} SLACK_ICON: https://github.com/rtCamp.png?size=48 SLACK_MESSAGE: ':x:' SLACK_TITLE: Failed build on ${{ github.event.repository.name }} repository SLACK_USERNAME: ${{ secrets.FAILED_BUILD_SLACK_USERNAME }} SLACK_WEBHOOK: ${{ secrets.FAILED_BUILD_SLACK_WEBHOOK }}