From b4c622b326b497fa475197877e8602ac28264b31 Mon Sep 17 00:00:00 2001 From: Szymon Kostrubiec Date: Tue, 30 Jul 2024 12:42:22 +0200 Subject: [PATCH 1/4] OP-467 - Update composer.json and builds --- .github/workflows/build.yml | 8 ++++---- composer.json | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9222224..067653c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,10 +21,10 @@ jobs: strategy: fail-fast: false matrix: - php: [ "8.1" ] - symfony: [ "5.4.*", "^6.0" ] - sylius: ["~1.12.0", "1.13.0"] - node: [ "14.x" ] + php: [ "8.1", "8.2", "8.3" ] + symfony: [ "^5.4", "^6.0" ] + sylius: [ "^1.12", "^1.13" ] + node: [ "18.x", "20.x" ] mysql: [ "8.0" ] env: diff --git a/composer.json b/composer.json index 6ef64b8..b879f71 100644 --- a/composer.json +++ b/composer.json @@ -10,7 +10,7 @@ "require": { "php": "^8.1", "doctrine/annotations": "^1.14", - "sylius/sylius": ">=1.12.13 || ~1.13.0", + "sylius/sylius": "^1.12 || ^1.13", "sylius/mailer-bundle": "^1.8 || ^2.0@beta", "symfony/webpack-encore-bundle": "^1.15" }, @@ -43,7 +43,7 @@ "symfony/flex": "^2.2.2", "symfony/intl": "^5.4 || ^6.0", "symfony/web-profiler-bundle": "^5.4 || ^6.0", - "vimeo/psalm": "5.12.0" + "vimeo/psalm": "4.27.0" }, "conflict": { "symfony/framework-bundle": "6.2.8", From 446179a885060fd43c8c8753b149172ec9ff35f0 Mon Sep 17 00:00:00 2001 From: janpalen Date: Tue, 20 Aug 2024 14:28:31 +0200 Subject: [PATCH 2/4] OP-467 - Update builds and composer --- .github/workflows/build.yml | 76 +++++++++++++---------- .github/workflows/coding_standard.yml | 88 +++++++++++++++++++++++++++ composer.json | 5 +- 3 files changed, 134 insertions(+), 35 deletions(-) create mode 100644 .github/workflows/coding_standard.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 067653c..a7f03a8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -8,8 +8,7 @@ on: release: types: [created] schedule: - - - cron: "0 1 * * 6" # Run at 1am every Saturday + - cron: "0 1 * * 6" # Run at 1am every Saturday workflow_dispatch: ~ jobs: @@ -21,12 +20,19 @@ jobs: strategy: fail-fast: false matrix: - php: [ "8.1", "8.2", "8.3" ] - symfony: [ "^5.4", "^6.0" ] + php: [ "8.0", "8.1", "8.2", "8.3" ] + symfony: [ "^5.4", "^6.4" ] sylius: [ "^1.12", "^1.13" ] node: [ "18.x", "20.x" ] mysql: [ "8.0" ] + exclude: + - sylius: ^1.13 + php: 8.0 + - sylius: ^1.12 + php: 8.0 + symfony: ^6.4 + env: APP_ENV: test DATABASE_URL: "mysql://root:root@127.0.0.1/sylius?serverVersion=${{ matrix.mysql }}" @@ -41,12 +47,12 @@ jobs: with: php-version: "${{ matrix.php }}" extensions: intl - tools: flex,symfony + tools: symfony coverage: none - name: Setup Node - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: "${{ matrix.node }}" @@ -80,29 +86,23 @@ jobs: - name: Get Composer cache directory id: composer-cache - run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT + run: echo "::set-output name=dir::$(composer config cache-files-dir)" - name: Cache Composer - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-php-${{ matrix.php }}-composer-${{ hashFiles('**/composer.json **/composer.lock') }} restore-keys: | ${{ runner.os }}-php-${{ matrix.php }}-composer- - - - - name: Configure global composer - run: | - composer global config --no-plugins allow-plugins.symfony/flex true - composer global require --no-progress --no-scripts --no-plugins "symfony/flex:^2.2.2" - - name: Restrict Symfony version if: matrix.symfony != '' run: | + composer global config --no-plugins allow-plugins.symfony/flex true + composer global require --no-progress --no-scripts --no-plugins "symfony/flex:^1.10" composer config extra.symfony.require "${{ matrix.symfony }}" - - name: Restrict Sylius version if: matrix.sylius != '' @@ -117,17 +117,16 @@ jobs: - name: Get Yarn cache directory id: yarn-cache - run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT + run: echo "::set-output name=dir::$(yarn cache dir)" - name: Cache Yarn - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ${{ steps.yarn-cache.outputs.dir }} key: ${{ runner.os }}-node-${{ matrix.node }}-yarn-${{ hashFiles('**/package.json **/yarn.lock') }} restore-keys: | ${{ runner.os }}-node-${{ matrix.node }}-yarn- - - name: Install JS dependencies run: (cd tests/Application && yarn install) @@ -137,13 +136,11 @@ jobs: run: | (cd tests/Application && bin/console doctrine:database:create -vvv) (cd tests/Application && bin/console doctrine:schema:create -vvv) - - name: Prepare test application assets run: | (cd tests/Application && bin/console assets:install public -vvv) - (cd tests/Application && yarn build:prod) - + (cd tests/Application && yarn encore dev) - name: Prepare test application cache run: (cd tests/Application && bin/console cache:warmup -vvv) @@ -154,26 +151,39 @@ jobs: - name: Validate composer.json - if: ${{ matrix.sylius != '1.13.0' }} run: composer validate --ansi --strict - name: Validate database schema run: (cd tests/Application && bin/console doctrine:schema:validate) - - name: Run PHPStan - run: vendor/bin/phpstan analyse -c phpstan.neon -l 8 src/ - - - name: Run ECS - run: vendor/bin/ecs check src - - - name: Run PHPSpec + - + name: Run PHPSpec run: vendor/bin/phpspec run --ansi -f progress --no-interaction - - name: Load fixtures in test application + - + name: Run PHPUnit + run: vendor/bin/phpunit --colors=always + + - + name: Run Behat + run: vendor/bin/behat --colors --strict -vvv --no-interaction || vendor/bin/behat --colors --strict -vvv --no-interaction --rerun + + - + name: Upload Behat logs + uses: actions/upload-artifact@v3 + if: failure() + with: + name: Behat logs + path: etc/build/ + if-no-files-found: ignore + + - + name: Load fixtures in test application run: (cd tests/Application && bin/console sylius:fixtures:load -n) - - - name: Failed build Slack notification + + - + name: Failed build Slack notification uses: rtCamp/action-slack-notify@v2 if: ${{ failure() && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master') }} env: diff --git a/.github/workflows/coding_standard.yml b/.github/workflows/coding_standard.yml new file mode 100644 index 0000000..97e34a4 --- /dev/null +++ b/.github/workflows/coding_standard.yml @@ -0,0 +1,88 @@ +name: Coding standard + +on: + push: + branches-ignore: + - 'dependabot/**' + pull_request: ~ + release: + types: [ created ] + workflow_dispatch: ~ + +jobs: + tests: + runs-on: ubuntu-latest + + name: "Sylius ${{ matrix.sylius }}, PHP ${{ matrix.php }}, Symfony ${{ matrix.symfony }}" + + strategy: + fail-fast: false + matrix: + php: [ "8.0", "8.1", "8.2", "8.3" ] + symfony: [ "^5.4", "^6.4" ] + sylius: [ "^1.12", "^1.13" ] + node: [ "18.x", "20.x" ] + + exclude: + - sylius: ^1.13 + php: 8.0 + - sylius: ^1.12 + php: 8.0 + symfony: ^6.4 + + steps: + - uses: actions/checkout@v3 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: "${{ matrix.php }}" + extensions: intl + tools: symfony + coverage: none + + - name: Get Composer cache directory + id: composer-cache + run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT + + - name: Cache Composer + uses: actions/cache@v4 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-php-${{ matrix.php }}-composer-${{ hashFiles('**/composer.json', '**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-php-${{ matrix.php }}-composer- + + - name: Restrict Symfony version + if: matrix.symfony != '' + run: | + composer global config --no-plugins allow-plugins.symfony/flex true + composer global require --no-progress --no-scripts --no-plugins "symfony/flex:^1.10" + composer config extra.symfony.require "${{ matrix.symfony }}" + + - name: Restrict Sylius version + if: matrix.sylius != '' + run: composer require "sylius/sylius:${{ matrix.sylius }}" --no-update --no-scripts --no-interaction + + - name: Install PHP dependencies + run: composer install --no-interaction + env: + SYMFONY_REQUIRE: ${{ matrix.symfony }} + + - name: Run PHPStan + run: vendor/bin/phpstan analyse -c phpstan.neon -l 8 src/ + + - name: Run ECS + run: vendor/bin/ecs check src + + - name: Failed build Slack notification + uses: rtCamp/action-slack-notify@v2 + if: ${{ failure() && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master') }} + env: + SLACK_CHANNEL: ${{ secrets.FAILED_BUILD_SLACK_CHANNEL }} + SLACK_COLOR: ${{ job.status }} + SLACK_ICON: https://github.com/rtCamp.png?size=48 + SLACK_MESSAGE: ':x:' + SLACK_TITLE: Failed build on ${{ github.event.repository.name }} repository + SLACK_USERNAME: ${{ secrets.FAILED_BUILD_SLACK_USERNAME }} + SLACK_WEBHOOK: ${{ secrets.FAILED_BUILD_SLACK_WEBHOOK }} diff --git a/composer.json b/composer.json index b879f71..18a58a7 100644 --- a/composer.json +++ b/composer.json @@ -8,9 +8,9 @@ ], "license": "MIT", "require": { - "php": "^8.1", + "php": "^8.0", "doctrine/annotations": "^1.14", - "sylius/sylius": "^1.12 || ^1.13", + "sylius/sylius": "~1.12.0 || ~1.13.0", "sylius/mailer-bundle": "^1.8 || ^2.0@beta", "symfony/webpack-encore-bundle": "^1.15" }, @@ -46,6 +46,7 @@ "vimeo/psalm": "4.27.0" }, "conflict": { + "behat/mink-selenium2-driver": ">=1.7.0", "symfony/framework-bundle": "6.2.8", "symfony/validator": "6.4.7" }, From f944c57811288ceb08e7c12024e13a07909c0fb2 Mon Sep 17 00:00:00 2001 From: janpalen Date: Tue, 20 Aug 2024 14:43:27 +0200 Subject: [PATCH 3/4] OP-467 - Fix phpStan --- .github/workflows/build.yml | 25 +++++++++++++------------ src/Action/CaptureAction.php | 2 +- src/Action/NotifyAction.php | 4 ++-- src/Api/ImojeApi.php | 10 +++++----- src/Controller/NotifyController.php | 4 ++-- src/Provider/PaymentTokenProvider.php | 4 ++-- 6 files changed, 25 insertions(+), 24 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a7f03a8..59648ca 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -165,18 +165,19 @@ jobs: name: Run PHPUnit run: vendor/bin/phpunit --colors=always - - - name: Run Behat - run: vendor/bin/behat --colors --strict -vvv --no-interaction || vendor/bin/behat --colors --strict -vvv --no-interaction --rerun - - - - name: Upload Behat logs - uses: actions/upload-artifact@v3 - if: failure() - with: - name: Behat logs - path: etc/build/ - if-no-files-found: ignore +# NO BEHAT TESTS +# - +# name: Run Behat +# run: vendor/bin/behat --colors --strict -vvv --no-interaction || vendor/bin/behat --colors --strict -vvv --no-interaction --rerun +# +# - +# name: Upload Behat logs +# uses: actions/upload-artifact@v3 +# if: failure() +# with: +# name: Behat logs +# path: etc/build/ +# if-no-files-found: ignore - name: Load fixtures in test application diff --git a/src/Action/CaptureAction.php b/src/Action/CaptureAction.php index 70b1f4d..0022a53 100644 --- a/src/Action/CaptureAction.php +++ b/src/Action/CaptureAction.php @@ -28,7 +28,7 @@ final class CaptureAction implements ActionInterface, ApiAwareInterface { use ApiAwareTrait; - public function __construct(private readonly SignatureResolverInterface $signatureResolver) + public function __construct(private SignatureResolverInterface $signatureResolver) { $this->apiClass = ImojeApi::class; } diff --git a/src/Action/NotifyAction.php b/src/Action/NotifyAction.php index 294c81e..7a1be8b 100644 --- a/src/Action/NotifyAction.php +++ b/src/Action/NotifyAction.php @@ -28,8 +28,8 @@ final class NotifyAction implements ActionInterface, ApiAwareInterface private ?Request $request; public function __construct( - private readonly RequestStack $requestStack, - private readonly SignatureResolverInterface $signatureResolver, + private RequestStack $requestStack, + private SignatureResolverInterface $signatureResolver, ) { $this->request = $requestStack->getCurrentRequest(); $this->apiClass = ImojeApi::class; diff --git a/src/Api/ImojeApi.php b/src/Api/ImojeApi.php index 64395fe..49d96d7 100644 --- a/src/Api/ImojeApi.php +++ b/src/Api/ImojeApi.php @@ -13,11 +13,11 @@ class ImojeApi implements ImojeApiInterface { public function __construct( - private readonly string $environment, - private readonly string $merchantId, - private readonly string $serviceId, - private readonly string $serviceKey, - private readonly string $authorizationToken, + private string $environment, + private string $merchantId, + private string $serviceId, + private string $serviceKey, + private string $authorizationToken, ) { } diff --git a/src/Controller/NotifyController.php b/src/Controller/NotifyController.php index 128accb..59650cc 100644 --- a/src/Controller/NotifyController.php +++ b/src/Controller/NotifyController.php @@ -22,8 +22,8 @@ final class NotifyController { public function __construct( - private readonly Payum $payum, - private readonly PaymentTokenProviderInterface $paymentTokenProvider, + private Payum $payum, + private PaymentTokenProviderInterface $paymentTokenProvider, ) { } diff --git a/src/Provider/PaymentTokenProvider.php b/src/Provider/PaymentTokenProvider.php index bbdde64..f7c59a7 100644 --- a/src/Provider/PaymentTokenProvider.php +++ b/src/Provider/PaymentTokenProvider.php @@ -20,8 +20,8 @@ final class PaymentTokenProvider implements PaymentTokenProviderInterface { public function __construct( - private readonly RepositoryInterface $orderRepository, - private readonly RepositoryInterface $paymentTokenRepository, + private RepositoryInterface $orderRepository, + private RepositoryInterface $paymentTokenRepository, ) { } From d5ec8ac47630b84cc3f4aa2884928e84450e0253 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Kukli=C5=84ski?= Date: Sun, 1 Sep 2024 21:53:24 +0200 Subject: [PATCH 4/4] Update .github/workflows/build.yml --- .github/workflows/build.yml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 59648ca..a24a177 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -164,20 +164,6 @@ jobs: - name: Run PHPUnit run: vendor/bin/phpunit --colors=always - -# NO BEHAT TESTS -# - -# name: Run Behat -# run: vendor/bin/behat --colors --strict -vvv --no-interaction || vendor/bin/behat --colors --strict -vvv --no-interaction --rerun -# -# - -# name: Upload Behat logs -# uses: actions/upload-artifact@v3 -# if: failure() -# with: -# name: Behat logs -# path: etc/build/ -# if-no-files-found: ignore - name: Load fixtures in test application