UNZER-527 --control gha run-- #1852
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: Development | |
on: [ push, pull_request, workflow_dispatch ] | |
env: | |
PACKAGE_NAME: 'oxid-esales/unzer' | |
MODULE_PATH: 'osc/unzer' | |
SONARCLOUD_ORGANIZATION: 'oxid-esales' | |
SONARCLOUD_PROJECT_KEY: 'OXID-eSales_unzer-module' | |
jobs: | |
install_shop_with_module: | |
strategy: | |
matrix: | |
php: [ '7.4' ] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Cleanup workspace | |
run: | | |
ls -la ./ | |
sudo rm -rf ./* || true | |
sudo rm -rf ./.??* || true | |
ls -la ./ | |
- name: Clone testing environment | |
run: git clone https://github.com/OXID-eSales/docker-eshop-sdk.git . | |
- name: Clone the shop | |
run: git clone --depth 1 https://github.com/OXID-eSales/oxideshop_ce.git --branch b-6.5.x --single-branch source | |
- name: Cache current installation | |
uses: actions/cache@v4 | |
with: | |
path: | | |
./* | |
key: development-${{ matrix.php }}-${{ 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;"\ | |
.env | |
perl -pi\ | |
-e 's#display_errors =.*#display_errors = false#g;'\ | |
-e 'print "xdebug.max_nesting_level=1000\nxdebug.mode=coverage\n\n"'\ | |
containers/php/custom.ini | |
perl -pi\ | |
-e 's#/var/www/#/var/www/source/#g;'\ | |
containers/httpd/project.conf | |
- name: Prepare shop configuration | |
run: | | |
cp source/source/config.inc.php.dist source/source/config.inc.php | |
sed -i "1s+^+SetEnvIf Authorization "\(.*\)" HTTP_AUTHORIZATION=\$1\n\n+" source/source/.htaccess | |
sed -i -e 's/<dbHost>/mysql/'\ | |
-e 's/<dbUser>/root/'\ | |
-e 's/<dbName>/example/'\ | |
-e 's/<dbPwd>/root/'\ | |
-e 's/<dbPort>/3306/'\ | |
-e 's/<sShopURL>/http:\/\/localhost.local\//'\ | |
-e 's/<sShopDir>/\/var\/www\/source\//'\ | |
-e 's/<sCompileDir>/\/var\/www\/source\/tmp\//'\ | |
source/source/config.inc.php | |
- name: Start containers | |
run: | | |
make up | |
sleep 2 | |
- name: Checkout current module | |
uses: actions/checkout@v4 | |
with: | |
path: source/test-module | |
- name: Install module | |
run: | | |
docker compose exec -T \ | |
php composer config repositories.${{ env.PACKAGE_NAME }} \ | |
--json '{"type":"path", "url":"./test-module", "options": {"symlink": true}}' | |
docker compose exec -T \ | |
php composer require ${{ env.PACKAGE_NAME }}:* --no-interaction --no-update | |
- name: Install dependencies and reset shop | |
run: | | |
docker compose exec -T php composer update --no-interaction | |
docker compose exec -T php php vendor/bin/reset-shop | |
- name: Put module settings | |
continue-on-error: true | |
run: | | |
mkdir -p source/var/configuration/environment/ | |
echo "${{ secrets.MODULE_SETTINGS }}" > source/var/configuration/environment/1.yaml | |
docker compose exec -T php php bin/oe-console oe:module:apply-configuration | |
- name: Show docker log | |
if: always() | |
run: | | |
docker compose logs | |
- name: Stop containers | |
if: always() | |
run: | | |
docker compose down | |
sleep 2 | |
- name: Upload configuration artifacts | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Configs-${{ matrix.php }} | |
path: | | |
docker compose.yml | |
source/composer.json | |
source/composer.lock | |
source/config.inc.php | |
data/php/logs/error_log.txt | |
styles: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
php: [ '8.0' ] | |
steps: | |
- name: Checkout current module | |
uses: actions/checkout@v4 | |
with: | |
path: source/test-module | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php }} | |
coverage: xdebug | |
- name: Install module dependencies | |
run: | | |
cd source/test-module | |
composer install | |
- name: Run phpstan | |
id: phpstan | |
if: always() | |
working-directory: source/test-module | |
run: composer phpstan-report || composer phpstan | |
- name: Run phpmd | |
id: phpmd | |
if: always() | |
working-directory: source/test-module | |
run: composer phpmd-report || composer phpmd | |
- name: Run phpcs | |
if: always() | |
run: | | |
cd source/test-module | |
composer phpcs | |
- name: Upload log artifact | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: StylesLog-${{ matrix.php }} | |
path: | | |
source/test-module/logs/psalm.sonarqube.json | |
unit_tests: | |
strategy: | |
matrix: | |
php: [ '7.4' ] | |
needs: [ install_shop_with_module ] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Load current installation from cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
./* | |
key: development-${{ matrix.php }}-${{ github.run_number }}-${{ github.run_attempt }} | |
restore-keys: | | |
development-${{ matrix.php }}-${{ github.run_number }}-${{ github.run_attempt }} | |
- name: Login to Docker Hub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKER_HUB_USER }} | |
password: ${{ secrets.DOCKER_HUB_TOKEN }} | |
- name: Start containers | |
run: | | |
make up | |
sleep 2 | |
- name: Run tests | |
run: | | |
docker compose exec -T \ | |
-e PARTIAL_MODULE_PATHS=${{ env.MODULE_PATH }} \ | |
-e ACTIVATE_ALL_MODULES=1 \ | |
-e RUN_TESTS_FOR_SHOP=0 \ | |
-e RUN_TESTS_FOR_MODULES=0 \ | |
-e XDEBUG_MODE=coverage \ | |
-e ADDITIONAL_TEST_PATHS='/var/www/vendor/${{ env.PACKAGE_NAME }}/Tests' \ | |
php php vendor/bin/runtests \ | |
--coverage-clover=/var/www/coverage.xml \ | |
--coverage-text \ | |
--log-junit=/var/www/phpunit.xml \ | |
AllTestsUnit | |
- name: Stop containers | |
if: always() | |
run: | | |
docker compose down | |
sleep 2 | |
- name: Upload log artifact | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: TestsLog-${{ matrix.php }} | |
path: | | |
source/coverage.xml | |
source/phpunit.xml | |
codeception_tests: | |
strategy: | |
fail-fast: false | |
matrix: | |
php: [ '7.4' ] | |
group: | |
[ | |
'PaymentAvailableTest', | |
'FirstGroup', | |
'SecondGroup', | |
'ThirdGroup', | |
'WechatpayPaymentTest' | |
] | |
needs: [ install_shop_with_module ] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Load current installation from cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
./* | |
key: development-${{ matrix.php }}-${{ github.run_number }}-${{ github.run_attempt }} | |
restore-keys: | | |
development-${{ matrix.php }}-${{ github.run_number }}-${{ github.run_attempt }} | |
- name: Login to Docker Hub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKER_HUB_USER }} | |
password: ${{ secrets.DOCKER_HUB_TOKEN }} | |
- name: Start containers | |
run: | | |
make up | |
sleep 2 | |
- name: Install codeception dependencies | |
run: | | |
docker compose exec -T php composer require codeception/module-rest:^1.4.2 --dev --no-update | |
docker compose exec -T php composer require codeception/module-phpbrowser:^1.0.2 --dev --no-update | |
docker compose exec -T php composer update | |
- name: Run tests | |
run: | | |
docker compose exec -T \ | |
-e PARTIAL_MODULE_PATHS=${{ env.MODULE_PATH }} \ | |
-e ACTIVATE_ALL_MODULES=1 \ | |
-e RUN_TESTS_FOR_SHOP=0 \ | |
-e RUN_TESTS_FOR_MODULES=0 \ | |
-e ADDITIONAL_TEST_PATHS='/var/www/vendor/${{ env.PACKAGE_NAME }}/Tests' \ | |
php php vendor/bin/runtests-codeception -g ${{ matrix.group }} | |
- name: Stop containers | |
if: always() | |
run: | | |
docker compose down | |
sleep 2 | |
- name: Upload log artifact | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: CodeceptionTestsLog-${{ matrix.php }}-${{ matrix.group }} | |
path: | | |
source/vendor/${{ env.PACKAGE_NAME }}/Tests/Codeception/_output/ | |
source/source/log/oxideshop.log | |
source/source/log/unzer/ | |
source/data/php/logs/error_log.txt | |
sonarcloud: | |
needs: [ styles, unit_tests ] | |
if: always() | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout current module | |
uses: actions/checkout@v4 | |
- name: Download phpunit artifacts | |
continue-on-error: true | |
uses: actions/download-artifact@v4 | |
with: | |
name: TestsLog-7.4 | |
path: ./tests/ | |
- name: Fix paths in unit logs | |
continue-on-error: true | |
run: | | |
sed -i 's+/var/www/test-module/++' tests/coverage.xml | |
sed -i 's+/var/www/test-module/++' tests/phpunit.xml | |
- name: Download styles artifacts | |
continue-on-error: true | |
uses: actions/download-artifact@v4 | |
with: | |
name: StylesLog-8.0 | |
path: ./styles/ | |
- name: SonarCloud Scan | |
uses: sonarsource/sonarcloud-github-action@master | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | |
with: | |
args: > | |
-Dsonar.organization=${{ env.SONARCLOUD_ORGANIZATION }} | |
-Dsonar.projectKey=${{ env.SONARCLOUD_PROJECT_KEY }} | |
-Dsonar.sources=src | |
-Dsonar.tests=Tests | |
-Dsonar.sourceEncoding=UTF-8 | |
-Dsonar.php.coverage.reportPaths=tests/coverage.xml | |
-Dsonar.php.psalm.reportPaths=styles/psalm.sonarqube.json | |
-Dsonar.cpd.php.minimumTokens=25 | |
-Dsonar.cpd.php.minimumLines=5 |