Skip to content

Merge pull request #136 from OXID-eSales/AM-151 #804

Merge pull request #136 from OXID-eSales/AM-151

Merge pull request #136 from OXID-eSales/AM-151 #804

Workflow file for this run

name: Development
on: [ push, pull_request, workflow_dispatch ]
env:
PACKAGE_NAME: 'oxid-solution-catalysts/adyen-module'
MODULE_PATH: 'osc/adyen'
SONARCLOUD_ORGANIZATION: 'oxid-esales'
SONARCLOUD_PROJECT_KEY: 'OXID-eSales_adyen-module'
jobs:
install_shop_with_module:
strategy:
matrix:
php: [ '7.4', '8.0', '8.1' ]
runs-on: ubuntu-latest
steps:
- name: Clone testing environment v3.0.0
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: moduleDevelopmentInstallation-${{ matrix.php }}-${{ 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;"\
.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-fpm/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>/https:\/\/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 composer require vlucas/phpdotenv --no-interaction --dev
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: Create .env-file
continue-on-error: true
working-directory: source/test-module/tests
run: |
echo "${{ secrets.DOTENV }}" > .env
- name: Stop containers
run: |
docker-compose down
sleep 2
styles:
strategy:
matrix:
php: [ '8.0' ]
runs-on: ubuntu-latest
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
extensions: gd, zip
- name: Install module dependencies
id: dependencies
working-directory: source/test-module
run: composer install
- name: Run phpcs
id: phpcs
if: always()
working-directory: source/test-module
run: composer phpcs
- 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: Upload log artifact
if: always()
uses: actions/upload-artifact@v4
with:
name: StylesLog-${{ matrix.php }}
path: |
source/test-module/phpstan.report.json
source/test-module/phpmd.report.json
unit_tests:
strategy:
fail-fast: false
matrix:
php: [ '7.4', '8.0', '8.1' ]
needs: [ install_shop_with_module ]
runs-on: ubuntu-latest
steps:
- name: Load current installation from cache
uses: actions/cache@v4
with:
path: |
./*
key: moduleDevelopmentInstallation-${{ matrix.php }}-${{ github.sha }}
restore-keys: |
moduleDevelopmentInstallation-${{ matrix.php }}-${{ github.sha }}
- 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-html=/var/www/coverage \
--coverage-text \
--log-junit=/var/www/phpunit.xml \
AllTestsUnit
- 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', '8.0', '8.1' ]
group:
- 'osc_adyen'
needs: [ install_shop_with_module ]
runs-on: ubuntu-latest
steps:
- name: Load current installation from cache
uses: actions/cache@v4
with:
path: |
./*
key: moduleDevelopmentInstallation-${{ matrix.php }}-${{ github.sha }}
restore-keys: |
moduleDevelopmentInstallation-${{ matrix.php }}-${{ github.sha }}
- 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 --group=${{ matrix.group }} --steps --debug
- 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 }}
path: |
source/vendor/${{ env.PACKAGE_NAME }}/tests/Codeception/_output/
source/source/log/oxideshop.log
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
uses: actions/download-artifact@v4
with:
name: StylesLog-8.0
path: ./styles/
- name: Fix paths in styles logs
continue-on-error: true
run: |
sed -i 's+\/home\/runner\/work\/.*?\/.*?\/source\/test-module\/++' styles/phpstan.report.json
- 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.phpstan.reportPaths=styles/phpstan.report.json
-Dsonar.cpd.php.minimumTokens=25
-Dsonar.cpd.php.minimumLines=5