Fix SonarCloud key #1493
Workflow file for this run
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: Slim Matrix | |
on: | |
push: | |
branches-ignore: | |
- b-7.0.x | |
- b-6.5.x | |
- b-6.4.x | |
pull_request: | |
workflow_dispatch: | |
jobs: | |
prepare_shop: | |
strategy: | |
matrix: | |
php: [ '8.1' ] | |
mysql: [ '8.0' ] | |
fail-fast: false | |
runs-on: ubuntu-latest | |
steps: | |
- name: Clone testing environment master | |
run: git clone --depth 1 https://github.com/OXID-eSales/docker-eshop-sdk.git --branch master --single-branch . | |
- name: Clone the shop (${{ github.ref_name }}) | |
if: github.event_name != 'pull_request' | |
run: git clone --depth 1 https://github.com/OXID-eSales/oxideshop_ce.git --branch ${{ github.ref_name }} --single-branch source | |
- name: Clone the shop (PR ${{ github.event.number }}) | |
if: github.event_name == 'pull_request' | |
run: | | |
git clone --depth 1 https://github.com/OXID-eSales/oxideshop_ce.git --branch ${{ github.base_ref }} --single-branch source | |
git -C source fetch origin refs/pull/${{ github.event.number }}/head:pr_${{ github.event.number }} | |
git -C source checkout pr_${{ github.event.number }} | |
- name: Cache current installation | |
uses: actions/cache@v3 | |
with: | |
path: | | |
./* | |
key: preparedShop-${{ matrix.php }}-${{ matrix.mysql }}-${{ github.sha }}-${{ github.run_number }}-${{ github.run_attempt }} | |
- name: Prepare container configuration | |
run: | | |
make setup | |
make addbasicservices | |
make file=services/selenium-chrome.yml addservice | |
perl -pi\ | |
-e "s#PHP_VERSION=.*#PHP_VERSION='${{ matrix.php }}'#g;"\ | |
-e "s#MYSQL_VERSION=.*#MYSQL_VERSION='${{ matrix.mysql }}'#g;"\ | |
.env | |
perl -pi\ | |
-e 's#display_errors =.*#display_errors = false#g;'\ | |
-e 'print "xdebug.max_nesting_level=1000\n\n";'\ | |
-e 'print "error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE & ~E_WARNING\n"'\ | |
containers/php/custom.ini | |
perl -pi\ | |
-e 's#/var/www/#/var/www/source/#g;'\ | |
containers/httpd/project.conf | |
- name: Start containers | |
run: | | |
make up | |
sleep 2 | |
- name: Install dependencies | |
run: docker-compose exec -T php composer update --no-interaction | |
- name: Setup config inc file | |
run: docker-compose exec -T php cp source/config.inc.php.dist source/config.inc.php | |
- name: Stop containers | |
run: | | |
docker-compose down | |
sleep 2 | |
install_shop: | |
strategy: | |
matrix: | |
php: [ '8.1' ] | |
mysql: [ '8.0' ] | |
fail-fast: false | |
needs: [ prepare_shop ] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Load prepared shop from cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
./* | |
key: preparedShop-${{ matrix.php }}-${{ matrix.mysql }}-${{ github.sha }}-${{ github.run_number }}-${{ github.run_attempt }} | |
restore-keys: | | |
preparedShop-${{ matrix.php }}-${{ matrix.mysql }}-${{ github.sha }}-${{ github.run_number }}-${{ github.run_attempt }} | |
preparedShop-${{ matrix.php }}-${{ matrix.mysql }}-${{ github.sha }} | |
- name: Start containers | |
run: | | |
make up | |
sleep 2 | |
- name: Run Install Shop | |
run: | | |
docker-compose exec -T php bin/oe-console oe:setup:shop \ | |
--db-host mysql \ | |
--db-port 3306 \ | |
--db-name example \ | |
--db-user root \ | |
--db-password root \ | |
--shop-url http://localhost.local \ | |
--shop-directory /var/www/source \ | |
--compile-directory /var/www/source/tmp | |
- name: Stop containers | |
run: | | |
docker-compose down | |
sleep 2 | |
- name: Cache current installation | |
uses: actions/cache@v3 | |
with: | |
path: | | |
./* | |
key: shopInstallation-${{ matrix.php }}-${{ matrix.mysql }}-${{ github.sha }}-${{ github.run_number }}-${{ github.run_attempt }} | |
unit_tests: | |
strategy: | |
matrix: | |
php: [ '8.1' ] | |
mysql: [ '8.0' ] | |
fail-fast: false | |
needs: [ install_shop ] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Load current installation from cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
./* | |
key: shopInstallation-${{ matrix.php }}-${{ matrix.mysql }}-${{ github.sha }}-${{ github.run_number }}-${{ github.run_attempt }} | |
restore-keys: | | |
shopInstallation-${{ matrix.php }}-${{ matrix.mysql }}-${{ github.sha }}-${{ github.run_number }}-${{ github.run_attempt }} | |
shopInstallation-${{ matrix.php }}-${{ matrix.mysql }}-${{ github.sha }} | |
- name: Start containers | |
run: | | |
make up | |
sleep 2 | |
- name: Run tests | |
run: | | |
docker-compose run -T php vendor/bin/phpunit \ | |
-c phpunit.xml tests/Unit \ | |
| tee unit_PHP${{ matrix.php }}_MYSQL${{ matrix.mysql }}_phpunit_log.txt 2>&1 || true | |
if grep -q -Ei 'fail|\\.\\=\\=|Warning|Notice|Deprecated|Fatal|Error' unit_PHP${{ matrix.php }}_MYSQL${{ matrix.mysql }}_phpunit_log.txt; then exit 1; fi | |
- name: Ensure that tests have been run | |
run: if [ ! -s unit_PHP${{ matrix.php }}_MYSQL${{ matrix.mysql }}_phpunit_log.txt ]; then echo "PHPUnit log file is empty! Seems like no tests have been run!" && exit 1; fi | |
- name: Upload PHPUnit Log | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: phpunit-logs | |
path: unit_PHP${{ matrix.php }}_MYSQL${{ matrix.mysql }}_phpunit_log.txt | |
if-no-files-found: error | |
retention-days: 7 | |
integration_tests: | |
strategy: | |
matrix: | |
php: [ '8.1' ] | |
mysql: [ '8.0' ] | |
fail-fast: false | |
needs: [ install_shop ] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Load current installation from cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
./* | |
key: shopInstallation-${{ matrix.php }}-${{ matrix.mysql }}-${{ github.sha }}-${{ github.run_number }}-${{ github.run_attempt }} | |
restore-keys: | | |
shopInstallation-${{ matrix.php }}-${{ matrix.mysql }}-${{ github.sha }}-${{ github.run_number }}-${{ github.run_attempt }} | |
shopInstallation-${{ matrix.php }}-${{ matrix.mysql }}-${{ github.sha }} | |
- name: Start containers | |
run: | | |
make up | |
sleep 2 | |
- name: Run tests | |
run: | | |
docker-compose run -T php vendor/bin/phpunit \ | |
-c phpunit.xml \ | |
--bootstrap tests/bootstrap.php tests/Integration \ | |
| tee integration_PHP${{ matrix.php }}_MYSQL${{ matrix.mysql }}_phpunit_log.txt 2>&1 || true | |
if grep -q -Ei 'fail|\\.\\=\\=|Warning|Notice|Deprecated|Fatal|Error' integration_PHP${{ matrix.php }}_MYSQL${{ matrix.mysql }}_phpunit_log.txt; then exit 1; fi | |
- name: Ensure that tests have been run | |
run: if [ ! -s integration_PHP${{ matrix.php }}_MYSQL${{ matrix.mysql }}_phpunit_log.txt ]; then echo "PHPUnit log file is empty! Seems like no tests have been run!" && exit 1; fi | |
- name: Upload PHPUnit Log | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: phpunit-logs | |
path: integration_PHP${{ matrix.php }}_MYSQL${{ matrix.mysql }}_phpunit_log.txt | |
if-no-files-found: error | |
retention-days: 7 | |
codeception_tests: | |
strategy: | |
matrix: | |
php: [ '8.1' ] | |
mysql: [ '8.0' ] | |
fail-fast: false | |
needs: [ install_shop ] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Load current installation from cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
./* | |
key: shopInstallation-${{ matrix.php }}-${{ matrix.mysql }}-${{ github.sha }}-${{ github.run_number }}-${{ github.run_attempt }} | |
restore-keys: | | |
shopInstallation-${{ matrix.php }}-${{ matrix.mysql }}-${{ github.sha }}-${{ github.run_number }}-${{ github.run_attempt }} | |
shopInstallation-${{ matrix.php }}-${{ matrix.mysql }}-${{ github.sha }} | |
- name: Start containers | |
run: | | |
make up | |
sleep 2 | |
- name: Install admin theme and template engine | |
run: | | |
docker-compose exec -T php composer require oxid-esales/twig-admin-theme:dev-b-7.0.x --with-all-dependencies | |
- name: Install APEX theme | |
run: | | |
docker-compose exec -T php composer require oxid-esales/apex-theme:dev-b-7.0.x --with-all-dependencies | |
- name: Run tests | |
run: | | |
docker-compose exec -T \ | |
-e SELENIUM_SERVER_HOST=selenium \ | |
-e BROWSER_NAME=chrome \ | |
-e THEME_ID=apex \ | |
php vendor/bin/codecept run acceptance,acceptanceAdmin \ | |
-c tests/codeception.yml \ | |
--ext DotReporter \ | |
-x flow_theme -x flow-theme \ | |
| tee codeception_PHP${{ matrix.php }}_MYSQL${{ matrix.mysql }}_phpunit_log.txt 2>&1 || true | |
if grep -q -Ei 'fail|\\.\\=\\=|Warning|Notice|Deprecated|Fatal|Error|DID NOT FINISH' codeception_PHP${{ matrix.php }}_MYSQL${{ matrix.mysql }}_phpunit_log.txt; then exit 1; fi | |
- name: Upload PHPUnit Log | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: phpunit-logs | |
path: codeception_PHP${{ matrix.php }}_MYSQL${{ matrix.mysql }}_phpunit_log.txt | |
if-no-files-found: error | |
retention-days: 7 | |
- name: Ensure that tests have been run | |
run: if [ ! -s codeception_PHP${{ matrix.php }}_MYSQL${{ matrix.mysql }}_phpunit_log.txt ]; then echo "PHPUnit log file is empty! Seems like no tests have been run!" && exit 1; fi | |
- name: Upload Codeception Artifacts | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: codeception-artifacts-PHP${{ matrix.php }}-MYSQL${{ matrix.mysql }} | |
path: source/tests/Codeception/_output/* | |
if-no-files-found: ignore | |
retention-days: 7 | |
shop_setup_tests: | |
strategy: | |
matrix: | |
php: [ '8.1' ] | |
mysql: [ '8.0' ] | |
fail-fast: false | |
needs: [ prepare_shop ] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Load prepared shop from cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
./* | |
key: preparedShop-${{ matrix.php }}-${{ matrix.mysql }}-${{ github.sha }}-${{ github.run_number }}-${{ github.run_attempt }} | |
restore-keys: | | |
preparedShop-${{ matrix.php }}-${{ matrix.mysql }}-${{ github.sha }}-${{ github.run_number }}-${{ github.run_attempt }} | |
preparedShop-${{ matrix.php }}-${{ matrix.mysql }}-${{ github.sha }} | |
- name: Start containers | |
run: | | |
make up | |
sleep 2 | |
- name: Install APEX theme | |
run: | | |
docker-compose exec -T php composer require oxid-esales/apex-theme --with-all-dependencies | |
- name: Install admin theme | |
run: | | |
docker-compose exec -T php composer require oxid-esales/twig-admin-theme | |
- name: Build Codeception | |
run: | | |
docker-compose exec -T php \ | |
php vendor/bin/codecept build \ | |
-c tests/codeception.yml | |
- name: Run Codeception tests | |
run: | | |
docker-compose exec -T \ | |
-e SELENIUM_SERVER_HOST=selenium \ | |
-e BROWSER_NAME=chrome \ | |
-e DB_NAME=setup_test \ | |
-e DB_USERNAME=root \ | |
-e DB_PASSWORD=root \ | |
-e DB_HOST=mysql \ | |
-e DB_PORT=3306 \ | |
-e SHOP_URL=http://localhost.local/ \ | |
-e SHOP_SOURCE_PATH=/var/www/source/ \ | |
php vendor/bin/codecept run acceptanceSetup \ | |
-c tests/codeception.yml \ | |
--ext DotReporter \ | |
| tee shop_setup_PHP${{ matrix.php }}_MYSQL${{ matrix.mysql }}_phpunit_log.txt 2>&1 || true | |
if grep -q -Ei 'fail|\\.\\=\\=|Warning|Notice|Deprecated|Fatal|Error|DID NOT FINISH' \ | |
shop_setup_PHP${{ matrix.php }}_MYSQL${{ matrix.mysql }}_phpunit_log.txt; then exit 1; fi | |
- name: Upload PHPUnit Log | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: phpunit-logs | |
path: shop_setup_PHP${{ matrix.php }}_MYSQL${{ matrix.mysql }}_phpunit_log.txt | |
if-no-files-found: error | |
retention-days: 7 | |
- name: Ensure that tests have been run | |
run: if [ ! -s shop_setup_PHP${{ matrix.php }}_MYSQL${{ matrix.mysql }}_phpunit_log.txt ]; then echo "PHPUnit log file is empty! Seems like no tests have been run!" && exit 1; fi | |
- name: Upload Codeception Artifacts | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: shop-setup-artifacts-PHP${{ matrix.php }}-MYSQL${{ matrix.mysql }} | |
path: source/tests/Codeception/_output/* | |
if-no-files-found: ignore | |
retention-days: 7 |