Skip to content

drop PHP 8.1 and below, add PHP 8.5 support, allow Tagging 9 #766

drop PHP 8.1 and below, add PHP 8.5 support, allow Tagging 9

drop PHP 8.1 and below, add PHP 8.5 support, allow Tagging 9 #766

Workflow file for this run

name: PHP CI
on: [push]
jobs:
phpcs:
name: Code Sniffer
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@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@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: Report annotations
id: report-annotations
run: ./vendor/bin/pmd2pr --graceful-warnings pmdphpmd.xml
package:
name: Package
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
############################################################################
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
tools: composer:v2.1.14, 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"
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
composer install --prefer-dist --no-progress
############################################################################
- name: Build archive using composer
run: composer archive --format=zip --file=archive
- name: Archive built arhive
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 install cannot
# run on 8.5 yet. This lane installs with the platform requirement ignored and
# only runs PHPCompatibility, which parses source and never executes Magento,
# so the module stays verified 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@v4
- name: Set up PHP
uses: shivammathur/setup-php@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@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