From 0f0b1c88da9ec6e21516331dd18347489217e3c9 Mon Sep 17 00:00:00 2001 From: Thomas Hauschild <7961978+Morgy93@users.noreply.github.com> Date: Tue, 20 Jan 2026 23:28:59 +0100 Subject: [PATCH 1/9] feat: update and enable workflow --- .github/workflows/check-phpcs.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/check-phpcs.yml b/.github/workflows/check-phpcs.yml index 0d47845..cfc5b20 100644 --- a/.github/workflows/check-phpcs.yml +++ b/.github/workflows/check-phpcs.yml @@ -6,20 +6,18 @@ permissions: contents: read env: - PHP_VERSION: "8.3" + PHP_VERSION: "8.4" jobs: check-phpcs: runs-on: ubuntu-latest - if: false - steps: - name: Checkout code - uses: actions/checkout@cbb722410c2e876e24abbe8de2cc27693e501dcb + uses: actions/checkout@v4 - name: Set up PHP - uses: shivammathur/setup-php@19ba822314c230a9039afce40e65d6c2b352ebfb + uses: shivammathur/setup-php@v2 with: php-version: ${{ env.PHP_VERSION }} From f4ddbf54ab43c4c45d49a54e137989d4aab6a0a7 Mon Sep 17 00:00:00 2001 From: Thomas Hauschild <7961978+Morgy93@users.noreply.github.com> Date: Tue, 20 Jan 2026 23:31:16 +0100 Subject: [PATCH 2/9] feat: add phpstan workflow and configuration --- .github/workflows/phpstan.yml | 112 ++++++++++++++++++++++++++++++++++ phpstan.neon | 5 ++ 2 files changed, 117 insertions(+) create mode 100644 .github/workflows/phpstan.yml create mode 100644 phpstan.neon diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml new file mode 100644 index 0000000..eebc2c0 --- /dev/null +++ b/.github/workflows/phpstan.yml @@ -0,0 +1,112 @@ +name: PHPStan + +on: + pull_request: + branches: [main] + push: + branches: [main] + workflow_dispatch: + +jobs: + phpstan: + name: PHPStan Analysis + runs-on: ubuntu-latest + + services: + mariadb: + image: mariadb:11.4 + env: + MYSQL_ROOT_PASSWORD: magento + MYSQL_DATABASE: magento + ports: + - 3306:3306 + options: --health-cmd="healthcheck.sh --connect --innodb_initialized" --health-interval=10s --health-timeout=5s --health-retries=3 + + opensearch: + image: opensearchproject/opensearch:3 + ports: + - 9200:9200 + env: + discovery.type: single-node + plugins.security.disabled: true + OPENSEARCH_JAVA_OPTS: -Xms512m -Xmx512m + options: --health-cmd="curl http://localhost:9200/_cluster/health" --health-interval=10s --health-timeout=5s --health-retries=10 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + path: mageforge + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: "8.4" + extensions: mbstring, intl, gd, xml, soap, zip, bcmath, pdo_mysql, curl, sockets + tools: composer:v2 + + - name: Cache Composer packages + id: composer-cache + uses: actions/cache@v4 + with: + path: ~/.composer/cache/files + key: ${{ runner.os }}-composer-2.4.8-${{ hashFiles('**/composer.json') }} + restore-keys: ${{ runner.os }}-composer-2.4.8 + + - name: Clone Magento + run: | + git clone --depth=1 --branch=2.4.8 https://github.com/magento/magento2.git magento2 + + - name: Install Magento + working-directory: magento2 + env: + COMPOSER_AUTH: ${{ secrets.COMPOSER_AUTH }} + run: | + composer config minimum-stability stable + composer config prefer-stable true + composer install --no-interaction --no-progress + bin/magento setup:install \ + --base-url=http://localhost \ + --db-host=127.0.0.1 \ + --db-name=magento \ + --db-user=root \ + --db-password=magento \ + --admin-firstname=Admin \ + --admin-lastname=User \ + --admin-email=admin@example.com \ + --admin-user=admin \ + --admin-password=admin12345 \ + --language=en_US \ + --currency=USD \ + --timezone=Europe/Berlin \ + --use-rewrites=1 \ + --backend-frontname=admin \ + --search-engine=opensearch \ + --opensearch-host=localhost \ + --opensearch-port=9200 \ + --opensearch-index-prefix=magento \ + --cleanup-database + + - name: Install MageForge Module and PHPStan + working-directory: magento2 + run: | + # Add local repository + composer config repositories.mageforge-local path ../mageforge + + # Install module + composer require --no-update openforgeproject/mageforge:@dev + + # Install PHPStan and Magento extension + composer require --dev --no-update bitexpert/phpstan-magento phpstan/extension-installer + + # Update + composer update --with-dependencies + + # Enable module + bin/magento module:enable OpenForgeProject_MageForge + bin/magento setup:upgrade + + - name: Run PHPStan + working-directory: magento2 + run: | + vendor/bin/phpstan analyse -c vendor/openforgeproject/mageforge/phpstan.neon vendor/openforgeproject/mageforge/src diff --git a/phpstan.neon b/phpstan.neon new file mode 100644 index 0000000..f70e4b9 --- /dev/null +++ b/phpstan.neon @@ -0,0 +1,5 @@ +parameters: + level: 6 + paths: + - src + checkGenericClassInNonGenericObjectType: false From a6a495e8eaa408a64cda1f350f13468e3b555433 Mon Sep 17 00:00:00 2001 From: Thomas Hauschild <7961978+Morgy93@users.noreply.github.com> Date: Tue, 20 Jan 2026 23:40:23 +0100 Subject: [PATCH 3/9] feat: update phpcs --- .github/workflows/{check-phpcs.yml => phpcs.yml} | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) rename .github/workflows/{check-phpcs.yml => phpcs.yml} (93%) diff --git a/.github/workflows/check-phpcs.yml b/.github/workflows/phpcs.yml similarity index 93% rename from .github/workflows/check-phpcs.yml rename to .github/workflows/phpcs.yml index cfc5b20..c00ea24 100644 --- a/.github/workflows/check-phpcs.yml +++ b/.github/workflows/phpcs.yml @@ -1,4 +1,4 @@ -name: Check phpcs +name: PHPCS on: [pull_request] @@ -25,4 +25,5 @@ jobs: run: composer create-project magento/magento-coding-standard --stability=dev /tmp/magento-coding-standard - name: Run PHPCS + continue-on-error: true run: /tmp/magento-coding-standard/vendor/bin/phpcs -p -s --standard=Magento2 src/ From 4eb25b43da081d9062c39c13ca1e571858ff2f7a Mon Sep 17 00:00:00 2001 From: Thomas Hauschild <7961978+Morgy93@users.noreply.github.com> Date: Tue, 20 Jan 2026 23:41:08 +0100 Subject: [PATCH 4/9] feat: add permissions for PHPStan workflow --- .github/workflows/phpstan.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml index eebc2c0..bc7dd7c 100644 --- a/.github/workflows/phpstan.yml +++ b/.github/workflows/phpstan.yml @@ -7,6 +7,9 @@ on: branches: [main] workflow_dispatch: +permissions: + contents: read + jobs: phpstan: name: PHPStan Analysis From ad5f4179c9aaee428d256138ca10fdfbf2da7f50 Mon Sep 17 00:00:00 2001 From: Thomas Hauschild <7961978+Morgy93@users.noreply.github.com> Date: Tue, 20 Jan 2026 23:41:16 +0100 Subject: [PATCH 5/9] feat: add continue-on-error for PHPStan step --- .github/workflows/phpstan.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml index bc7dd7c..2c72eec 100644 --- a/.github/workflows/phpstan.yml +++ b/.github/workflows/phpstan.yml @@ -111,5 +111,6 @@ jobs: - name: Run PHPStan working-directory: magento2 + continue-on-error: true run: | vendor/bin/phpstan analyse -c vendor/openforgeproject/mageforge/phpstan.neon vendor/openforgeproject/mageforge/src From b4935b853e9fd07c6044ebea2c2fe30043ed0310 Mon Sep 17 00:00:00 2001 From: Thomas Hauschild <7961978+Morgy93@users.noreply.github.com> Date: Tue, 20 Jan 2026 23:48:49 +0100 Subject: [PATCH 6/9] fix: update opensearch plugin disable flag --- .github/workflows/phpstan.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml index 2c72eec..88ab7b2 100644 --- a/.github/workflows/phpstan.yml +++ b/.github/workflows/phpstan.yml @@ -31,7 +31,7 @@ jobs: - 9200:9200 env: discovery.type: single-node - plugins.security.disabled: true + DISABLE_SECURITY_PLUGIN: true OPENSEARCH_JAVA_OPTS: -Xms512m -Xmx512m options: --health-cmd="curl http://localhost:9200/_cluster/health" --health-interval=10s --health-timeout=5s --health-retries=10 From b9982397884560ae081706f10f68374923efc1d5 Mon Sep 17 00:00:00 2001 From: Thomas Hauschild <7961978+Morgy93@users.noreply.github.com> Date: Tue, 20 Jan 2026 23:58:23 +0100 Subject: [PATCH 7/9] fix: update phpstan dependency version --- .github/workflows/phpstan.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml index 88ab7b2..b309a11 100644 --- a/.github/workflows/phpstan.yml +++ b/.github/workflows/phpstan.yml @@ -100,7 +100,7 @@ jobs: composer require --no-update openforgeproject/mageforge:@dev # Install PHPStan and Magento extension - composer require --dev --no-update bitexpert/phpstan-magento phpstan/extension-installer + composer require --dev --no-update bitexpert/phpstan-magento "phpstan/phpstan:^2.0" phpstan/extension-installer # Update composer update --with-dependencies From 1c2acd6332ba63c44defb6681243cfa66fe18157 Mon Sep 17 00:00:00 2001 From: Thomas Hauschild <7961978+Morgy93@users.noreply.github.com> Date: Wed, 21 Jan 2026 00:03:24 +0100 Subject: [PATCH 8/9] feat: allow phpstan extension installer in composer --- .github/workflows/phpstan.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml index b309a11..31d59d8 100644 --- a/.github/workflows/phpstan.yml +++ b/.github/workflows/phpstan.yml @@ -99,6 +99,9 @@ jobs: # Install module composer require --no-update openforgeproject/mageforge:@dev + # Allow PHPStan extension installer + composer config --no-plugins allow-plugins.phpstan/extension-installer true + # Install PHPStan and Magento extension composer require --dev --no-update bitexpert/phpstan-magento "phpstan/phpstan:^2.0" phpstan/extension-installer From d749f37d9f812aec849e41292f1f1c54d8d4cec2 Mon Sep 17 00:00:00 2001 From: Thomas Hauschild <7961978+Morgy93@users.noreply.github.com> Date: Wed, 21 Jan 2026 00:09:06 +0100 Subject: [PATCH 9/9] fix: remove checkGenericClassInNonGenericObjectType flag --- phpstan.neon | 1 - 1 file changed, 1 deletion(-) diff --git a/phpstan.neon b/phpstan.neon index f70e4b9..6e451fa 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -2,4 +2,3 @@ parameters: level: 6 paths: - src - checkGenericClassInNonGenericObjectType: false