Skip to content

Versionnumber

Versionnumber #1710

Workflow file for this run

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