Fix SonarCloud key #2094
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: 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 |