Skip to content

Fix SonarCloud key #2094

Fix SonarCloud key

Fix SonarCloud key #2094

Workflow file for this run

name: SonarCloud
on:
push:
workflow_dispatch:
jobs:
prepare_shop:
strategy:
matrix:
php: [ '8.0' ]
mysql: [ '5.7' ]
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 }}
- 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.0' ]
mysql: [ '5.7' ]
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 }}
restore-keys: |
preparedShop-${{ matrix.php }}-${{ matrix.mysql }}-${{ github.sha }}
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 }}
all_tests:
strategy:
matrix:
php: [ '8.0' ]
mysql: [ '5.7' ]
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 }}
restore-keys: |
shopInstallation-${{ matrix.php }}-${{ matrix.mysql }}-${{ github.sha }}
- name: Start containers
run: |
make up
sleep 2
- name: Set swap space
uses: pierotofy/set-swap-space@master
with:
swap-size-gb: 10
- name: Reset shop
run: docker-compose exec -T php php bin/oe-console oe:database:reset --db-host=mysql --db-port=3306 --db-name=example --db-user=root --db-password=root --force
- name: Run tests
run: |
docker-compose run -T \
-e XDEBUG_MODE=coverage \
php php vendor/bin/phpunit -c phpunit.xml --bootstrap tests/bootstrap.php tests --coverage-clover=/var/www/tests_coverage.xml | tee tests_PHP${{ matrix.php }}_MYSQL${{ matrix.mysql }}_phpunit_log.txt 2>&1 || true
if grep -q -Ei 'fail|\\.\\=\\=|Warning|Notice|Deprecated|Fatal|Error' tests_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: tests_PHP${{ matrix.php }}_MYSQL${{ matrix.mysql }}_phpunit_log.txt
if-no-files-found: error
retention-days: 7
- name: Upload Coverage Report
if: always()
uses: actions/upload-artifact@v3
with:
name: coverage-reports
path: source/tests_coverage.xml
if-no-files-found: error
retention-days: 7
deprecated_all_tests:
strategy:
matrix:
php: [ '8.0' ]
mysql: [ '5.7' ]
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 }}
restore-keys: |
shopInstallation-${{ matrix.php }}-${{ matrix.mysql }}-${{ github.sha }}
- name: Start containers
run: |
make up
sleep 2
- name: Set swap space
uses: pierotofy/set-swap-space@master
with:
swap-size-gb: 10
- 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 flow theme
run: docker-compose exec -T php composer require oxid-esales/twig-theme:dev-b-7.0.x --with-all-dependencies
- name: Install dependencies
run: docker-compose exec -T php composer require oxid-esales/tests-deprecated-ce:dev-b-7.0.x --with-all-dependencies
- name: Copy config file
run: cp source/vendor/oxid-esales/testing-library/test_config.yml.dist source/test_config.yml
- name: Reset shop
run: docker-compose exec -T php php vendor/bin/reset-shop
- name: Run tests
run: |
docker-compose run -T \
-e XDEBUG_MODE=coverage \
php php vendor/bin/runtests --coverage-clover=/var/www/deprecated_tests_coverage.xml AllTestsUnit | tee deprecated_tests_PHP${{ matrix.php }}_MYSQL${{ matrix.mysql }}_phpunit_log.txt 2>&1 || true
if grep -v 'tests-deprecated' deprecated_tests_PHP${{ matrix.php }}_MYSQL${{ matrix.mysql }}_phpunit_log.txt | grep -q -Ei 'fail|\\.\\=\\=|Warning|Notice|Deprecated|Fatal|Error|DID NOT FINISH'; then exit 1; fi
- name: Upload PHPUnit Log
if: always()
uses: actions/upload-artifact@v3
with:
name: phpunit-logs
path: deprecated_tests_PHP${{ matrix.php }}_MYSQL${{ matrix.mysql }}_phpunit_log.txt
if-no-files-found: error
retention-days: 7
- name: Upload Coverage Report
if: always()
uses: actions/upload-artifact@v3
with:
name: coverage-reports
path: source/deprecated_tests_coverage.xml
if-no-files-found: error
retention-days: 7
codeception_tests:
strategy:
matrix:
php: [ '8.0' ]
mysql: [ '5.7' ]
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 }}
restore-keys: |
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 XDEBUG_MODE=coverage \
-e THEME_ID=apex \
php vendor/bin/codecept run acceptance,acceptanceAdmin \
-c tests/codeception.yml \
--ext DotReporter \
--coverage-xml=/var/www/codeception_coverage.xml \
-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: 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
- name: Upload Coverage Report
if: always()
uses: actions/upload-artifact@v3
with:
name: coverage-reports
path: source/codeception_coverage.xml
if-no-files-found: error
retention-days: 7
shop_setup_tests:
strategy:
matrix:
php: [ '8.0' ]
mysql: [ '5.7' ]
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
sonarcloud:
needs: [ all_tests, deprecated_all_tests, codeception_tests, shop_setup_tests ]
runs-on: ubuntu-latest
steps:
- name: Checkout shop
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Download Coverage Reports
uses: actions/download-artifact@v3
with:
name: coverage-reports
path: coverage-reports
- name: Fix Paths In Coverage Reports
run: |
sed -i 's#/var/www/##' coverage-reports/tests_coverage.xml
sed -i 's#/var/www/##' coverage-reports/deprecated_tests_coverage.xml
sed -i 's#/var/www/##' coverage-reports/codeception_coverage.xml
- name: Set target branch
run: |
if [[ "${{ github.ref_name }}" == "b-6.5.x" ]]; then TARGET_BRANCH=b-7.0.x; fi
if [[ "${{ github.ref_name }}" == "b-6.4.x" ]]; then TARGET_BRANCH=b-6.5.x; fi
if [[ "${{ github.ref_name }}" == *"b-7.0.x"* && "${{ github.ref_name }}" != "b-7.0.x" ]]; then TARGET_BRANCH=b-7.0.x; fi
if [[ "${{ github.ref_name }}" == *"b-6.5.x"* && "${{ github.ref_name }}" != "b-6.5.x" ]]; then TARGET_BRANCH=b-6.5.x; fi
if [[ "${{ github.ref_name }}" == *"b-6.4.x"* && "${{ github.ref_name }}" != "b-6.4.x" ]]; then TARGET_BRANCH=b-6.4.x; fi
echo "TARGET_BRANCH=$TARGET_BRANCH" >> $GITHUB_ENV
- name: SonarCloud Scan (oxideshop_ce)
uses: sonarsource/sonarcloud-github-action@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
with:
args: >
-Dsonar.projectKey=OXID-eSales_oxideshop_ce
-Dsonar.organization=oxid-esales
-Dsonar.projectName=oxideshop_ce
-Dsonar.language=php
-Dsonar.scm.provider=git
-Dsonar.branch.name=${{ github.ref_name }}
-Dsonar.branch.target=${{ env.TARGET_BRANCH }}
-Dsonar.sources=source
-Dsonar.tests=tests
-Dsonar.php.coverage.reportPaths=coverage-reports/tests_coverage.xml,coverage-reports/deprecated_tests_coverage.xml,coverage-reports/codeception_coverage.xml
- name: SonarCloud Scan (oxideshop_ce_internal)
uses: sonarsource/sonarcloud-github-action@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
with:
args: >
-Dsonar.projectKey=OXID-eSales_oxideshop_ce
-Dsonar.organization=oxid-esales
-Dsonar.projectName=oxideshop_ce_internal
-Dsonar.language=php
-Dsonar.scm.provider=git
-Dsonar.branch.name=${{ github.ref_name }}
-Dsonar.branch.target=${{ env.TARGET_BRANCH }}
-Dsonar.sources=source/Internal
-Dsonar.tests=tests
-Dsonar.php.coverage.reportPaths=coverage-reports/tests_coverage.xml,coverage-reports/deprecated_tests_coverage.xml,coverage-reports/codeception_coverage.xml