Skip to content

CI: migrate PHPStan to PrestaShop/.github action#44

Merged
jolelievre merged 10 commits into
PrestaShop:devfrom
mattgoud:fix-ci-migrate-phpstan-to-action
Jun 11, 2026
Merged

CI: migrate PHPStan to PrestaShop/.github action#44
jolelievre merged 10 commits into
PrestaShop:devfrom
mattgoud:fix-ci-migrate-phpstan-to-action

Conversation

@mattgoud

@mattgoud mattgoud commented Jun 2, 2026

Copy link
Copy Markdown
Contributor
Questions Answers
Branch? dev
Description? The Docker-based PHPStan approach (tests/phpstan.sh) was failing with Error response from daemon: No such container: temp-ps because the prestashop/prestashop:latest Docker image now exits immediately due to entrypoint changes, causing the volume container to disappear before PHPStan can use it.

This PR migrates to the shared PrestaShop/.github PHPStan action (as used by ps_googleanalytics, ps_emailsubscription, blockreassurance):
- Adds tests/php/phpstan/ with version-specific neon configs for 8.2.x, 9.0.3, 9.1.x and develop
- Replaces the single Docker-based job with two action-based jobs: phpstan-74 (PS 8.2.x / PHP 7.2–8.1) and phpstan (PS 9.x — 9.0.3, 9.1.x, develop / PHP 8.1–8.5, with 9.0.3 capped at PHP 8.4 since PS 9.0.x does not support 8.5)
- Expands the php-linter job to check every PHP version from 7.2 to 8.5 (adds the missing 7.3, 8.1, 8.2, 8.3, 8.4 intermediates)
- Removes tests/phpstan.sh and the now-orphaned legacy tests/phpstan/ configs (1.7.7/1.7.8/8.0/latest)
- Fixes the pre-existing PHPStan offset errors in getPages() by declaring the DB row shape via a @var PHPDoc instead of mutating $row (no ignoreErrors needed)
- Bumps ps_versions_compliancy min from 1.7.7 to 8.2.0 so the declared support matches the PS 8.2+ baseline targeted by the module cleanup Epic and what the CI actually verifies, consistent with sibling native modules
Type? improvement
BC breaks? no
Deprecations? no
Fixed issue or discussion? Fixes #43, Fixes #45
Part of PrestaShop/PrestaShop#41648
Sponsor company PrestaShop SA

Replace the Docker-based phpstan.sh approach with the shared
PrestaShop/.github PHPStan action. The old approach was failing because
the prestashop/prestashop:latest Docker image now exits immediately
(due to entrypoint changes), causing "No such container: temp-ps" errors.

- Add tests/php/phpstan/ with version-specific neon configs for
  8.1.7, 8.2.x, 9.1.x and develop
- Add prepend-constants.php for PS 9.x bootstrap constants
- Replace single Docker-based phpstan job with two action-based jobs:
  phpstan-74 (PS 8.x, PHP 7.4-8.1) and phpstan (PS 9.x, PHP 8.1-8.5)
- Remove tests/phpstan.sh (no longer needed)

Fixes #ISSUE

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@ps-jarvis

Copy link
Copy Markdown

Hello @mattgoud!

This is your first pull request on pagesnotfound repository of the PrestaShop project.

Thank you, and welcome to this Open Source community!

@github-project-automation github-project-automation Bot moved this to Ready for review in PR Dashboard Jun 2, 2026
@mattgoud mattgoud added the bug label Jun 2, 2026
@mattgoud mattgoud self-assigned this Jun 2, 2026
- Add missing blank line after <?php in index.php (php-cs-fixer)
- Add ignoreErrors for pre-existing PHPStan errors on PS 8.x

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
mattgoud and others added 4 commits June 5, 2026 15:14
Declare the full row shape returned by executeS() via a @var PHPDoc and
stop mutating $row['http_referer'] (use a local $httpReferer variable),
so PHPStan no longer narrows $row to array{http_referer: string} and
correctly recognizes the request_uri and nb offsets. Cast nb to int for
the counter arithmetic.

Removes the now-unneeded ignoreErrors from the PS 8.x PHPStan configs.

Fixes PrestaShop#45

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…figs

The PHPStan CI no longer covers PS 1.7.x / 8.0 (the shared PrestaShop/.github
action targets 8.1.7+). Bump ps_versions_compliancy min from 1.7.7 to 8.1.0 so
the declared support matches what CI actually verifies, consistent with sibling
native modules (ps_googleanalytics, ps_emailsubscription).

Also remove the orphaned tests/phpstan/ directory (1.7.7/1.7.8/8.0/latest neon
configs) left behind by the migration to tests/php/phpstan/ — no workflow
references it anymore.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
All four version-specific PHPStan configs now contain only the `includes`
block, removing the leftover empty `parameters: / ignoreErrors:` scaffolding
that suppressed nothing. Consistent across versions.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Drop the 8.1.7 target to match the project-wide module cleanup Epic
which standardizes native modules on PS 8.2+:
- php.yml: phpstan-74 matrix now runs against 8.2.x only (PHP 7.4/8.1)
- ps_versions_compliancy min bumped 8.1.0 -> 8.2.0
- remove the now-unreferenced phpstan-8.1.7.neon config

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Comment thread .github/workflows/php.yml
Comment thread .github/workflows/php.yml
…9.0.3

- php-linter: add missing intermediate syntax checks (7.3, 8.1, 8.2, 8.3, 8.4)
- phpstan-74: lower floor to PHP 7.2 (real minimum for PS 8.2.x)
- phpstan: add PrestaShop 9.0.3 (tag) + neon config

Part of PrestaShop/PrestaShop#41648

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Comment thread .github/workflows/php.yml Outdated
Co-authored-by: Jonathan Lelievre <jo.lelievre@gmail.com>
jolelievre
jolelievre previously approved these changes Jun 10, 2026
@ps-jarvis ps-jarvis added the Waiting for QA Status: Action required, Waiting for test feedback label Jun 10, 2026
@ps-jarvis ps-jarvis moved this from Ready for review to To be tested in PR Dashboard Jun 10, 2026
Comment thread .github/workflows/php.yml Outdated
matrix:
presta-versions: ['1.7.7', '1.7.8', '8.0', 'latest']
presta_version: ['9.0.3', '9.1.x', 'develop']
php_version: ['8.1', '8.5']

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah wait! The 8.5 won't work for 9.0.3

@mattgoud mattgoud Jun 10, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok @jolelievre, fixed, switched to an explicit include list so 9.0.3 caps at 8.4 (no more 9.0.3 x 8.5), while 9.1.x and develop still test up to 8.5

PrestaShop 9.0.x supports PHP 8.1 up to 8.4 only, so the cross-product
matrix was generating an invalid 9.0.3 x 8.5 combination. Switch to an
explicit include list so each PrestaShop version tests its proper PHP
floor and ceiling (9.0.3: 8.1/8.4, 9.1.x and develop: 8.1/8.5).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mattgoud

mattgoud commented Jun 11, 2026

Copy link
Copy Markdown
Contributor Author

correction: this is a major bump, not a patch — version set to 4.0.0 (pagesnotfound.php + config.xml)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mattgoud mattgoud force-pushed the fix-ci-migrate-phpstan-to-action branch from c854b0e to 1c3393a Compare June 11, 2026 09:38

@jolelievre jolelievre left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @mattgoud

@jolelievre jolelievre merged commit bcc46b7 into PrestaShop:dev Jun 11, 2026
12 checks passed
@github-project-automation github-project-automation Bot moved this from To be tested to Merged in PR Dashboard Jun 11, 2026
@ps-jarvis

Copy link
Copy Markdown

PR merged, well done!

Message to @PrestaShop/committers: do not forget to milestone it before the merge.

@mattgoud mattgoud added this to the 4.0.0 milestone Jun 19, 2026
@mattgoud mattgoud removed the Waiting for QA Status: Action required, Waiting for test feedback label Jun 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Archived in project

4 participants