Merge pull request #185 from Nosto/release/6.0.0 #775
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: PHP CI | |
| on: [push] | |
| jobs: | |
| phpcs: | |
| name: Code Sniffer | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 | |
| ############################################################################ | |
| - name: Set up PHP | |
| uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: '8.2' | |
| tools: composer:v2 | |
| extensions: ast, bcmath, gd | |
| coverage: none | |
| #https://github.com/actions/cache/blob/master/examples.md#php---composer | |
| - name: Cache composer packages | |
| id: composer-cache | |
| run: | | |
| composer config cache-files-dir | |
| echo "dir=$(composer config cache-files-dir)" >> "$GITHUB_OUTPUT" | |
| - uses: actions/cache@v4 | |
| with: | |
| path: ${{ steps.composer-cache.outputs.dir }} | |
| key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-composer- | |
| - name: Update project dependencies | |
| env: | |
| REPO_USR: ${{ secrets.REPO_USR }} | |
| REPO_PSW: ${{ secrets.REPO_PSW }} | |
| run: | | |
| composer config repositories.0 composer https://repo.magento.com | |
| composer config http-basic.repo.magento.com "$REPO_USR" "$REPO_PSW" | |
| composer install --prefer-dist --no-progress | |
| ############################################################################ | |
| - name: Run the sniffer | |
| run: | | |
| ./vendor/bin/phpcs --config-set ignore_errors_on_exit 1 | |
| ./vendor/bin/phpcs --config-set ignore_warnings_on_exit 1 | |
| ./vendor/bin/phpcs --standard=ruleset.xml --report=checkstyle --report-file=chkphpcs.xml | |
| - name: Archive code sniffing results | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: phpcs-xml-result | |
| path: chkphpcs.xml | |
| - name: Report annotations | |
| id: report-annotations | |
| run: ./vendor/bin/cs2pr --graceful-warnings chkphpcs.xml | |
| phpmd: | |
| name: Mess Detect | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 | |
| ############################################################################ | |
| - name: Set up PHP | |
| uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: '8.2' | |
| tools: composer:v2 | |
| extensions: ast, bcmath, gd | |
| coverage: none | |
| #https://github.com/actions/cache/blob/master/examples.md#php---composer | |
| - name: Cache composer packages | |
| id: composer-cache | |
| run: | | |
| composer config cache-files-dir | |
| echo "dir=$(composer config cache-files-dir)" >> "$GITHUB_OUTPUT" | |
| - uses: actions/cache@v4 | |
| with: | |
| path: ${{ steps.composer-cache.outputs.dir }} | |
| key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-composer- | |
| - name: Update project dependencies | |
| env: | |
| REPO_USR: ${{ secrets.REPO_USR }} | |
| REPO_PSW: ${{ secrets.REPO_PSW }} | |
| run: | | |
| composer config repositories.0 composer https://repo.magento.com | |
| composer config http-basic.repo.magento.com "$REPO_USR" "$REPO_PSW" | |
| composer install --prefer-dist --no-progress | |
| ############################################################################ | |
| - name: Run the mess detector | |
| run: ./vendor/bin/phpmd . xml codesize,naming,unusedcode,controversial,design --exclude vendor,var,build,tests --reportfile pmdphpmd.xml --ignore-violations-on-exit | |
| - name: Archive mess detection results | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: phpmd-xml-result | |
| path: pmdphpmd.xml | |
| - name: Detect code standard violations | |
| if: always() && hashFiles('pmdphpmd.xml') != '' | |
| # pmd2pr came from mridang/pmd-annotations, which caps at php ^7.0 and so | |
| # cannot be installed on 8.2. Emit the GitHub annotations directly instead. | |
| run: | | |
| php -r " | |
| \$xml = @simplexml_load_file('pmdphpmd.xml'); | |
| if (\$xml === false) { exit(0); } | |
| \$workspace = rtrim(getenv('GITHUB_WORKSPACE') ?: '', '/'); | |
| foreach (\$xml->file as \$file) { | |
| \$filepath = (string)\$file['name']; | |
| if (\$workspace !== '' && strpos(\$filepath, \$workspace . '/') === 0) { | |
| \$filepath = substr(\$filepath, strlen(\$workspace) + 1); | |
| } | |
| \$filepath = str_replace(['%', \"\r\", \"\n\"], ['%25', '%0D', '%0A'], \$filepath); | |
| foreach (\$file->violation as \$violation) { | |
| \$line = (int)\$violation['beginline']; | |
| \$msg = trim((string)\$violation); | |
| \$msg = str_replace(['%', \"\r\", \"\n\"], ['%25', '%0D', '%0A'], \$msg); | |
| echo \"::notice file={\$filepath},line={\$line}::PHPMD: {\$msg}\n\"; | |
| } | |
| } | |
| " || true | |
| package: | |
| name: Package | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 | |
| ############################################################################ | |
| - name: Set up PHP | |
| uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: '8.2' | |
| tools: composer:v2, pecl | |
| extensions: ast, bcmath, gd | |
| coverage: none | |
| #https://github.com/actions/cache/blob/master/examples.md#php---composer | |
| - name: Cache composer packages | |
| id: composer-cache | |
| run: | | |
| echo "dir=$(composer config cache-files-dir)" >> "$GITHUB_OUTPUT" | |
| - uses: actions/cache@v4 | |
| with: | |
| path: ${{ steps.composer-cache.outputs.dir }} | |
| key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-composer- | |
| - name: Update project dependencies | |
| env: | |
| REPO_USR: ${{ secrets.REPO_USR }} | |
| REPO_PSW: ${{ secrets.REPO_PSW }} | |
| run: | | |
| composer config repositories.0 composer https://repo.magento.com | |
| composer config http-basic.repo.magento.com "$REPO_USR" "$REPO_PSW" | |
| # The companion Nosto modules are declared with --no-update on purpose: the | |
| # constraints are written into the archived composer.json without being | |
| # resolved. Resolving is unnecessary here (`composer archive` only zips this | |
| # package's own files and needs no vendor/) and would fail the lock | |
| # consistency check, since these packages are deliberately not in composer.lock. | |
| composer require --no-update nosto/module-nostotagging:@stable | |
| composer require --no-update nosto/module-nosto-msi:@stable | |
| composer require --no-update nosto/module-nosto-itp:@stable | |
| ############################################################################ | |
| - name: Build archive using composer | |
| run: composer archive --format=zip --file=archive | |
| - name: Archive built archive | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: composer-zip-archive | |
| path: archive.zip | |
| # Magento 2.4.8 pins php to ~8.2.0||~8.3.0||~8.4.0, so a normal Magento install cannot | |
| # run on 8.5 yet. This lane runs on PHP 8.5 without installing Magento; it only lints the | |
| # repository and runs PHPCompatibility in an isolated directory to keep the module 8.5-clean | |
| # ahead of Magento allowing 8.5. | |
| php-compat: | |
| name: PHP 8.2-8.5 Compatibility | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 | |
| - name: Set up PHP | |
| uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # v2 | |
| with: | |
| php-version: '8.5' | |
| tools: composer:v2 | |
| coverage: none | |
| - name: Cache composer packages | |
| id: composer-cache | |
| run: | | |
| composer config cache-files-dir | |
| echo "dir=$(composer config cache-files-dir)" >> "$GITHUB_OUTPUT" | |
| - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 | |
| with: | |
| path: ${{ steps.composer-cache.outputs.dir }} | |
| key: ${{ runner.os }}-composer-phpcompat-${{ hashFiles('**/composer.json') }} | |
| restore-keys: | | |
| ${{ runner.os }}-composer-phpcompat- | |
| - name: Lint every source file under PHP 8.5 | |
| run: | | |
| find . -path ./vendor -prune -o \( -name '*.php' -o -name '*.phtml' \) -print0 \ | |
| | xargs -0 -n1 -P4 php -l > /dev/null | |
| - name: Install PHPCompatibility (isolated) | |
| run: | | |
| # magento/magento-coding-standard pulls magento/php-compatibility-fork, which | |
| # `replace`s phpcompatibility/php-compatibility with a 9.x-era fork that does | |
| # NOT implement the PHP 8.4/8.5 sniffs - it detects only 1 of 4 known 8.2-8.5 | |
| # deprecations. Install the real sniffs in an isolated directory so this gate | |
| # actually has teeth. This also avoids needing a Magento install here at all. | |
| mkdir -p "$RUNNER_TEMP/phpcompat" | |
| composer --working-dir="$RUNNER_TEMP/phpcompat" init --no-interaction --name=tmp/phpcompat | |
| composer --working-dir="$RUNNER_TEMP/phpcompat" config \ | |
| allow-plugins.dealerdirect/phpcodesniffer-composer-installer true | |
| composer --working-dir="$RUNNER_TEMP/phpcompat" require --no-interaction --quiet \ | |
| squizlabs/php_codesniffer:^3.13 \ | |
| phpcompatibility/php-compatibility:^10.0@alpha \ | |
| staabm/annotate-pull-request-from-checkstyle:^1.1 | |
| - name: Run the compatibility sniffs | |
| run: | | |
| PHPCS="$RUNNER_TEMP/phpcompat/vendor/bin/phpcs" | |
| "$PHPCS" --standard=ruleset-phpcompat.xml \ | |
| --report=checkstyle --report-file=chkphpcompat.xml || true | |
| "$PHPCS" --standard=ruleset-phpcompat.xml --report=full | |
| - name: Report annotations | |
| if: always() && hashFiles('chkphpcompat.xml') != '' | |
| run: | | |
| "$RUNNER_TEMP/phpcompat/vendor/bin/cs2pr" chkphpcompat.xml |