Skip to content

B 7.0.x pspaypal 812 takeover pspaypal 806 #1341

B 7.0.x pspaypal 812 takeover pspaypal 806

B 7.0.x pspaypal 812 takeover pspaypal 806 #1341

Workflow file for this run

name: Development
on: [ push, pull_request ]
env:
PACKAGE_NAME: 'oxid-solution-catalysts/paypal-module'
CLIENT_PACKAGE_NAME: 'oxid-solution-catalysts/paypal-client'
CLIENT_REPO_NAME: 'https://github.com/OXID-eSales/paypal-client.git'
MODULE_PATH: 'osc/paypal'
SONARCLOUD_ORGANIZATION: 'oxid-esales'
SONARCLOUD_PROJECT_KEY: 'OXID-eSales_module-paypal_checkout'
jobs:
install_shop_with_module:
strategy:
matrix:
php: [ '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 . && git reset --hard v3.0.0
- name: Clone the shop
run: git clone --depth 1 https://github.com/OXID-eSales/oxideshop_ce.git --branch b-7.0.x --single-branch source
- name: Cache current installation
uses: actions/cache@v3.3.2
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>/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 require symfony/dotenv:^5.1 --no-update
docker-compose exec -T \
php composer require codeception/module-rest:1.4.2 --no-update
docker-compose exec -T \
php composer require codeception/module-phpbrowser:^1.0.2 --no-update
docker-compose exec -T \
php composer config repositories.${{ env.CLIENT_PACKAGE_NAME }} git ${{ env.CLIENT_REPO_NAME }}
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
echo "${{ secrets.MODULE_ENV }}" > source/vendor/${{ env.PACKAGE_NAME }}/tests/.env
docker-compose exec -T php php bin/oe-console oe:module:apply-configuration
- 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@v3
with:
name: StylesLog-${{ matrix.php }}
path: |
source/test-module/tests/reports/phpstan.report.json
source/test-module/tests/reports/phpmd.report.json
unit_tests:
strategy:
fail-fast: false
matrix:
php: [ '8.0', '8.1' ]
needs: [ install_shop_with_module ]
runs-on: ubuntu-latest
steps:
- name: Load current installation from cache
uses: actions/cache@v3.3.2
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-text \
--log-junit=/var/www/phpunit.xml \
AllTestsUnit
- name: Upload log artifact
if: always()
uses: actions/upload-artifact@v3
with:
name: TestsLog-${{ matrix.php }}
path: |
source/coverage.xml
source/phpunit.xml
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@v3
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@v3
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.php.phpmd.reportPaths=styles/phpmd.report.json
-Dsonar.cpd.php.minimumTokens=25
-Dsonar.cpd.php.minimumLines=5