Compare commits

...

42 Commits

Author SHA1 Message Date
GrayBot 28f9e498aa chore: release 7.0.0-rc.0 (#228) 2026-04-28 09:52:54 -04:00
Damien Retzinger 4001e8118b chore: release 7.0.0-rc.0
Release-As: 7.0.0-rc.0
2026-04-28 09:51:46 -04:00
Damien Retzinger b90317db60 ci: merge release-pinback and release-please workflows 2026-04-28 09:49:40 -04:00
Damien Retzinger ef5e69859c ci: prevent running tests on release PR 2026-04-28 09:45:19 -04:00
Damien Retzinger 1f4db0036c ci: automate pinning of in-repo versions at release time 2026-04-27 19:10:34 -04:00
Damien Retzinger e1a8a81488 feat(coding-standard): skip composer install if the coding is already installed 2026-04-27 14:03:49 -04:00
Damien Retzinger 3fad3a8995 feat(coding-standard): add missing composer_auth to require of magento-coding-standard 2026-04-27 14:03:12 -04:00
Damien Retzinger f8eff3c183 ci: update release refs to specific versions 2026-04-27 13:36:56 -04:00
Damien Retzinger ac4d16919b ci: handle edgecases 2026-04-27 12:03:05 -04:00
Damien Retzinger 5009cbf6da ci: replace pinback PAT with custom PAT 2026-04-27 11:56:02 -04:00
Damien Retzinger 4a0dcce0c9 ci: remove unnecessary cat 2026-04-27 11:46:49 -04:00
Damien Retzinger 5989e53c34 ci: adjust to auto-open PR 2026-04-27 11:44:49 -04:00
Damien Retzinger 7a3a4fdb6d ci: only modify uses 2026-04-27 11:38:52 -04:00
Damien Retzinger d4f4f9f468 ci: show diff'd files on pinback 2026-04-27 11:36:27 -04:00
Damien Retzinger 702ab13a0a build: gitignore tmp 2026-04-27 11:33:14 -04:00
Damien Retzinger 070b7b9901 ci: add workflow to automate version pinback to main for repo HEAD 2026-04-27 11:32:53 -04:00
Damien Retzinger 7e828eef67 ci: adjust to use internal version 2026-04-27 10:20:50 -04:00
Damien Retzinger dd543ffdea ci: adjust to use internal version 2026-04-27 10:16:02 -04:00
Damien Retzinger a2a45eb2fe docs: revise status badges 2026-04-27 10:10:12 -04:00
Damien Retzinger fa5620fc05 docs: remove stale badges and add missing actions 2026-04-27 10:05:54 -04:00
Damien Retzinger d80befbe9b fix(check-extension): mirror path repos to prevent symlink errors with template files (#218)
Composer installs path repositories as symlinks by default, which causes Magento's template engine to fail when resolving .phtml files. Setting `COMPOSER_MIRROR_PATH_REPOS=1` on all composer install steps forces a copy instead, matching how the package would be installed from Packagist in production.

Adds a .phtml template and an integration test to the demo package that
renders it via Magento's template engine. Without COMPOSER_MIRROR_PATH_REPOS=1
the path repo is installed as a symlink and the test fails; with mirroring
it passes.

Closes #217
2026-04-26 23:05:21 -04:00
Damien Retzinger d5c744e155 feat(coding-standard)!: remove pr-diff feature and built-in php setup (#224)
BREAKING CHANGE: Much of the "setup" that's built-into the command is removed in favor of a leaner action. This also includes the "on PR, only diff PR contents" behavior. This can be restored, but it shouldn't be the default and should be done as an input.

Fix SEVERITY_FLAGS construction which exited 1 under bash -e when
severity inputs were empty, causing CI failures.
2026-04-26 22:51:44 -04:00
Damien Retzinger 953de845eb feat(coding-standard-baseline)!: remove coding-standard-baseline action (#223) 2026-04-26 21:49:48 -04:00
Damien Retzinger de415eaff5 feat(install-test)!: remove install test (#222)
BREAKING CHANGE: You should rely on [Check Extension](https://github.com/graycoreio/github-actions-magento2/blob/main/.github/workflows/check-extension-README.md) instead.
2026-04-26 21:40:01 -04:00
Damien Retzinger 8f3c6eb927 refactor(cache-magento): remove unused mode cache arg (#220) 2026-04-26 21:31:21 -04:00
Damien Retzinger 98923b24c5 feat(unit-test)!: remove unit-test action (#221) 2026-04-26 21:31:07 -04:00
Damien Retzinger a92fe04503 docs: add guidance on what things belong in actions and what things dont 2026-04-26 21:15:47 -04:00
David Lambauer b510ea21e3 fix(supported-version)!: default include_services to true (#215)
BREAKING CHANGE: `include_services` now defaults to `true`. Callers that strictly validate the matrix schema and do not expect a `services` key must explicitly pass `include_services: false`.

Closes #214
2026-04-23 18:42:44 -04:00
David Lambauer 7799f0f9bf fix(check-extension): probe vendor dir for MageOS/Magento standards when running phpcs (#216)
Closes #213
2026-04-23 18:41:45 -04:00
GrayBot 2ef157ef8a chore: release 6.0.0 (#212) 2026-03-11 11:14:17 -04:00
Damien Retzinger 7e40a62efa feat(supported-version): upgrade opensearch to 2.19.5 2026-03-11 11:08:55 -04:00
Damien Retzinger b4526dbb52 feat(supported-version): add support for MageOS 2.2.0 2026-03-10 13:47:46 -04:00
Damien Retzinger e6be791eed feat(supported-version)!: update for Magento v2.4.8-p4 release
BREAKING CHANGE: Adobe has dropped support for elasticsearch and redis in their latest releases of v2.4.8.
2026-03-10 13:37:20 -04:00
GrayBot 2855f468ef chore: release 5.1.0 (#211) 2026-02-19 12:58:06 -05:00
Damien Retzinger 7e70ee93ef feat(supported-version): upgrade to compsoer 2.9.5 2026-02-19 11:16:35 -05:00
Damien Retzinger d29e574475 feat(supported-versions): upgrade 2.4.8-p2/p3 to opensearch 3 2026-02-19 11:11:24 -05:00
Damien Retzinger c19912dc4b feat(supported-version): bump all nginx versions to latest supported version 2026-02-19 11:05:23 -05:00
Damien Retzinger c26e84f693 feat(supported-version): bump all composer versions to latest supported version 2026-02-19 11:00:38 -05:00
Ryan Hoerr 48902e8e6a feat(supported-version): backport composer 2.9.3 to older mage-os verisons 2026-02-19 10:54:30 -05:00
Ryan Hoerr 07f89530df feat(supported-version): updated matrix for Mage-OS 2.1.0 2026-02-19 10:54:29 -05:00
Ryan Hoerr 505179ce7b fix(supported-version): pin specific composer 2 versions for historic Magento releases 2026-02-19 10:54:20 -05:00
Damien Retzinger 34ddee6aef fix: using latest accidentally output two versions for Magento Open Source 2026-02-19 10:31:12 -05:00
42 changed files with 683 additions and 861 deletions
@@ -32,6 +32,7 @@ on:
jobs: jobs:
compute_matrix: compute_matrix:
if: "!startsWith(github.head_ref, 'release-please')"
runs-on: ubuntu-latest runs-on: ubuntu-latest
outputs: outputs:
matrix: ${{ steps.supported-version.outputs.matrix }} matrix: ${{ steps.supported-version.outputs.matrix }}
@@ -51,9 +52,14 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v6
- uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
tools: composer:v${{ matrix.composer }}
coverage: none
- uses: './coding-standard' - uses: './coding-standard'
with: with:
version: ${{ github.event.inputs.version || '*' }} version: ${{ github.event.inputs.version || '*' }}
path: ${{ github.event.inputs.path || '_test/demo-package' }} path: ${{ github.event.inputs.path || '_test/demo-package' }}
composer_version: ${{ matrix.composer }}
php_version: ${{ matrix.php }}
@@ -19,6 +19,7 @@ on:
jobs: jobs:
get-composer-version: get-composer-version:
if: "!startsWith(github.head_ref, 'release-please')"
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v6
@@ -18,6 +18,7 @@ on:
jobs: jobs:
get-magento-version: get-magento-version:
if: "!startsWith(github.head_ref, 'release-please')"
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v6
-56
View File
@@ -1,56 +0,0 @@
name: Installation Test
on:
workflow_dispatch: {}
push:
branches:
- main
paths:
- "_test/demo-package/**"
- "installation-test/**"
- ".github/workflows/_internal-install.yaml"
- "supported-version/**"
- "!(**/*.md)"
pull_request:
branches:
- main
paths:
- "_test/demo-package/**"
- "installation-test/**"
- ".github/workflows/_internal-install.yaml"
- "supported-version/**"
- "!(**/*.md)"
env:
MAGENTO_COMPOSER_REPO: "https://mirror.mage-os.org/"
jobs:
compute_matrix:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.supported-version.outputs.matrix }}
steps:
- uses: actions/checkout@v6
- uses: ./supported-version
with:
kind: currently-supported
id: supported-version
- run: echo ${{ steps.supported-version.outputs.matrix }}
install-test:
needs: compute_matrix
strategy:
matrix: ${{ fromJSON(needs.compute_matrix.outputs.matrix) }}
fail-fast: false
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: ./installation-test
with:
composer_version: ${{ matrix.composer }}
php_version: ${{ matrix.php }}
magento_version: ${{ matrix.magento }}
package_name: mage-os/magento2-demo-package
source_folder: $GITHUB_WORKSPACE/_test/demo-package
composer_auth: ${{ secrets.COMPOSER_AUTH }}
magento_repository: ${{ env.MAGENTO_COMPOSER_REPO }}
@@ -23,6 +23,7 @@ on:
jobs: jobs:
compute_matrix: compute_matrix:
if: "!startsWith(github.head_ref, 'release-please')"
runs-on: ubuntu-latest runs-on: ubuntu-latest
outputs: outputs:
matrix: ${{ steps.supported-version.outputs.matrix }} matrix: ${{ steps.supported-version.outputs.matrix }}
@@ -18,6 +18,7 @@ on:
jobs: jobs:
semver-compare: semver-compare:
if: "!startsWith(github.head_ref, 'release-please')"
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v6
@@ -26,6 +26,7 @@ env:
jobs: jobs:
compute_matrix: compute_matrix:
if: "!startsWith(github.head_ref, 'release-please')"
runs-on: ubuntu-latest runs-on: ubuntu-latest
outputs: outputs:
matrix: ${{ steps.supported-version.outputs.matrix }} matrix: ${{ steps.supported-version.outputs.matrix }}
@@ -101,9 +102,8 @@ jobs:
working-directory: ${{ env.magento_folder }} working-directory: ${{ env.magento_folder }}
composer_auth: ${{ secrets.COMPOSER_AUTH }} composer_auth: ${{ secrets.COMPOSER_AUTH }}
- uses: graycoreio/github-actions-magento2/cache-magento@main - uses: ./cache-magento
with: with:
mode: 'store'
composer_cache_key: '${{ matrix.magento }}' composer_cache_key: '${{ matrix.magento }}'
- run: composer install - run: composer install
@@ -114,6 +114,7 @@ jobs:
COMPOSER_AUTH: ${{ secrets.COMPOSER_AUTH }} COMPOSER_AUTH: ${{ secrets.COMPOSER_AUTH }}
setup-magento-extension: setup-magento-extension:
if: "!startsWith(github.head_ref, 'release-please')"
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v6
@@ -128,9 +129,8 @@ jobs:
composer_auth: ${{ secrets.COMPOSER_AUTH }} composer_auth: ${{ secrets.COMPOSER_AUTH }}
magento_version: magento/project-community-edition:2.4.8-p3 magento_version: magento/project-community-edition:2.4.8-p3
- uses: graycoreio/github-actions-magento2/cache-magento@main - uses: ./cache-magento
with: with:
mode: 'extension'
composer_cache_key: 'magento/project-community-edition:2.4.8-p3' composer_cache_key: 'magento/project-community-edition:2.4.8-p3'
- run: composer install - run: composer install
-35
View File
@@ -1,35 +0,0 @@
name: Unit Test
on:
push:
branches:
- main
paths:
- "_test/demo-package/**"
- ".github/workflows/_internal-unit.yaml"
- "unit-test/**"
- "!(**/*.md)"
pull_request:
branches:
- main
paths:
- "_test/demo-package/**"
- ".github/workflows/_internal-unit.yaml"
- "unit-test/**"
- "!(**/*.md)"
jobs:
unit-test:
strategy:
matrix:
php_version:
- 8.2
- 8.3
- 8.4
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: ./unit-test
with:
source_folder: _test/demo-package
php_version: ${{ matrix.php_version }}
@@ -22,6 +22,7 @@ on:
- "!(**/*.md)" - "!(**/*.md)"
jobs: jobs:
compute_matrix: compute_matrix:
if: "!startsWith(github.head_ref, 'release-please')"
runs-on: ubuntu-latest runs-on: ubuntu-latest
outputs: outputs:
matrix: ${{ steps.supported-version.outputs.matrix }} matrix: ${{ steps.supported-version.outputs.matrix }}
@@ -20,6 +20,7 @@ on:
jobs: jobs:
unit-test: unit-test:
if: "!startsWith(github.head_ref, 'release-please')"
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v6
+18 -46
View File
@@ -44,7 +44,7 @@ jobs:
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v6
- uses: graycoreio/github-actions-magento2/setup-magento@main - uses: graycoreio/github-actions-magento2/setup-magento@v7.0.0-rc.0
id: setup-magento id: setup-magento
with: with:
php-version: ${{ matrix.php }} php-version: ${{ matrix.php }}
@@ -54,9 +54,8 @@ jobs:
magento_repository: ${{ inputs.magento_repository }} magento_repository: ${{ inputs.magento_repository }}
composer_auth: ${{ secrets.composer_auth }} composer_auth: ${{ secrets.composer_auth }}
- uses: graycoreio/github-actions-magento2/cache-magento@main - uses: graycoreio/github-actions-magento2/cache-magento@v7.0.0-rc.0
with: with:
mode: extension
composer_cache_key: ${{ inputs.composer_cache_key }} composer_cache_key: ${{ inputs.composer_cache_key }}
- name: Add extension repository - name: Add extension repository
@@ -76,6 +75,7 @@ jobs:
run: composer install run: composer install
env: env:
COMPOSER_AUTH: ${{ secrets.composer_auth }} COMPOSER_AUTH: ${{ secrets.composer_auth }}
COMPOSER_MIRROR_PATH_REPOS: 1
- name: Configure phpunit.xml.dist - name: Configure phpunit.xml.dist
working-directory: ${{ steps.setup-magento.outputs.path }} working-directory: ${{ steps.setup-magento.outputs.path }}
@@ -104,7 +104,7 @@ jobs:
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v6
- uses: graycoreio/github-actions-magento2/setup-magento@main - uses: graycoreio/github-actions-magento2/setup-magento@v7.0.0-rc.0
id: setup-magento id: setup-magento
with: with:
php-version: ${{ matrix.php }} php-version: ${{ matrix.php }}
@@ -114,9 +114,8 @@ jobs:
magento_repository: ${{ inputs.magento_repository }} magento_repository: ${{ inputs.magento_repository }}
composer_auth: ${{ secrets.composer_auth }} composer_auth: ${{ secrets.composer_auth }}
- uses: graycoreio/github-actions-magento2/cache-magento@main - uses: graycoreio/github-actions-magento2/cache-magento@v7.0.0-rc.0
with: with:
mode: extension
composer_cache_key: ${{ inputs.composer_cache_key }} composer_cache_key: ${{ inputs.composer_cache_key }}
- name: Add extension repository - name: Add extension repository
@@ -138,6 +137,7 @@ jobs:
run: composer install run: composer install
env: env:
COMPOSER_AUTH: ${{ secrets.composer_auth }} COMPOSER_AUTH: ${{ secrets.composer_auth }}
COMPOSER_MIRROR_PATH_REPOS: 1
- name: Enable all modules - name: Enable all modules
working-directory: ${{ steps.setup-magento.outputs.path }} working-directory: ${{ steps.setup-magento.outputs.path }}
@@ -154,45 +154,17 @@ jobs:
fail-fast: ${{ inputs.fail-fast }} fail-fast: ${{ inputs.fail-fast }}
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v6
- name: Get Composer Version
uses: graycoreio/github-actions-magento2/get-composer-version@main
id: get-composer-version
- name: Check if allow-plugins option is available for this version of composer - uses: shivammathur/setup-php@v2
uses: graycoreio/github-actions-magento2/semver-compare@main
with: with:
version: 2.2 php-version: ${{ matrix.php }}
compare_against: ${{ steps.get-composer-version.outputs.version }} tools: composer:v${{ matrix.composer }}
id: is-allow-plugins-available coverage: none
- name: Enable dealerdirect/phpcodesniffer-composer-installer plugin - uses: graycoreio/github-actions-magento2/coding-standard@v7.0.0-rc.0
shell: bash with:
working-directory: ${{ inputs.path }} path: ${{ inputs.path }}
run: composer config allow-plugins.dealerdirect/phpcodesniffer-composer-installer true --global composer_auth: ${{ secrets.composer_auth }}
if: steps.is-allow-plugins-available.outputs.result < 1
- name: Install Coding Standard
shell: bash
working-directory: ${{ inputs.path }}
run: composer require "magento/magento-coding-standard" "magento/php-compatibility-fork"
env:
COMPOSER_AUTH: ${{ secrets.composer_auth }}
- name: Register Coding Standard
shell: bash
working-directory: ${{ inputs.path }}
run: vendor/bin/phpcs --config-set installed_paths vendor/magento/magento-coding-standard,vendor/magento/php-compatibility-fork
- name: Coding Standard Check
shell: bash
run: |
if [ -f .phpcs.xml ] || [ -f phpcs.xml ] || [ -f .phpcs.xml.dist ] || [ -f phpcs.xml.dist ]; then
./vendor/bin/phpcs .
else
./vendor/bin/phpcs --standard=Magento2 --ignore=*vendor/* .
fi
working-directory: ${{ inputs.path }}
integration_test: integration_test:
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
@@ -203,7 +175,7 @@ jobs:
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v6
- uses: graycoreio/github-actions-magento2/setup-magento@main - uses: graycoreio/github-actions-magento2/setup-magento@v7.0.0-rc.0
id: setup-magento id: setup-magento
with: with:
php-version: ${{ matrix.php }} php-version: ${{ matrix.php }}
@@ -213,9 +185,8 @@ jobs:
magento_repository: ${{ inputs.magento_repository }} magento_repository: ${{ inputs.magento_repository }}
composer_auth: ${{ secrets.composer_auth }} composer_auth: ${{ secrets.composer_auth }}
- uses: graycoreio/github-actions-magento2/cache-magento@main - uses: graycoreio/github-actions-magento2/cache-magento@v7.0.0-rc.0
with: with:
mode: extension
composer_cache_key: ${{ inputs.composer_cache_key }} composer_cache_key: ${{ inputs.composer_cache_key }}
- name: Add extension repository - name: Add extension repository
@@ -237,8 +208,9 @@ jobs:
run: composer install run: composer install
env: env:
COMPOSER_AUTH: ${{ secrets.composer_auth }} COMPOSER_AUTH: ${{ secrets.composer_auth }}
COMPOSER_MIRROR_PATH_REPOS: 1
- uses: graycoreio/github-actions-magento2/get-magento-version@main - uses: graycoreio/github-actions-magento2/get-magento-version@v7.0.0-rc.0
id: magento-version id: magento-version
with: with:
working-directory: ${{ steps.setup-magento.outputs.path }} working-directory: ${{ steps.setup-magento.outputs.path }}
+2 -1
View File
@@ -82,7 +82,7 @@ jobs:
COMPOSER_AUTH: ${{ secrets.composer_auth }} COMPOSER_AUTH: ${{ secrets.composer_auth }}
name: Create Magento ${{ matrix.magento }} Project name: Create Magento ${{ matrix.magento }} Project
- uses: graycoreio/github-actions-magento2/get-magento-version@main - uses: graycoreio/github-actions-magento2/get-magento-version@v7.0.0-rc.0
id: magento-version id: magento-version
with: with:
working-directory: ${{ inputs.magento_directory }} working-directory: ${{ inputs.magento_directory }}
@@ -140,6 +140,7 @@ jobs:
env: env:
COMPOSER_CACHE_DIR: ${{ steps.composer-cache.outputs.dir }} COMPOSER_CACHE_DIR: ${{ steps.composer-cache.outputs.dir }}
COMPOSER_AUTH: ${{ secrets.composer_auth }} COMPOSER_AUTH: ${{ secrets.composer_auth }}
COMPOSER_MIRROR_PATH_REPOS: 1
- name: Replace Configuration Settings for env - name: Replace Configuration Settings for env
working-directory: ${{ inputs.magento_directory }}/dev/tests/integration working-directory: ${{ inputs.magento_directory }}/dev/tests/integration
+125 -1
View File
@@ -4,11 +4,135 @@ on:
push: push:
branches: branches:
- main - main
workflow_dispatch:
env:
RELEASE_BRANCH: release-please--branches--main--components--github-actions-magento2
jobs: jobs:
release-please: release-please:
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: write
outputs:
releases_created: ${{ steps.release.outputs.releases_created }}
steps: steps:
- uses: googleapis/release-please-action@v4 - id: release
uses: googleapis/release-please-action@v4
with: with:
token: ${{ secrets.GRAYCORE_GITHUB_TOKEN }} token: ${{ secrets.GRAYCORE_GITHUB_TOKEN }}
- name: Check if release branch exists
id: branch-check
if: steps.release.outputs.releases_created != 'true'
env:
GH_TOKEN: ${{ secrets.GRAYCORE_GITHUB_TOKEN }}
run: |
if gh api "repos/${{ github.repository }}/git/refs/heads/${{ env.RELEASE_BRANCH }}" --silent 2>/dev/null; then
echo "EXISTS=true" >> $GITHUB_OUTPUT
else
echo "EXISTS=false" >> $GITHUB_OUTPUT
fi
- name: Checkout release PR branch
if: steps.branch-check.outputs.EXISTS == 'true'
uses: actions/checkout@v6
with:
ref: ${{ env.RELEASE_BRANCH }}
token: ${{ secrets.GRAYBOT_PIN_BACK_PAT }}
- name: Pin refs on release PR branch
id: pin-refs
if: steps.branch-check.outputs.EXISTS == 'true'
run: |
VERSION="v$(jq -r '."."' .release-please-manifest.json)"
echo "VERSION=${VERSION}" >> $GITHUB_OUTPUT
sed -i "s|uses: graycoreio/github-actions-magento2/\([^@]*\)@main|uses: graycoreio/github-actions-magento2/\1@${VERSION}|g" \
*/action.yml \
$(find .github/workflows \( -name "*.yml" -o -name "*.yaml" \) ! -name "release-*" ! -name "_internal*")
if git diff --quiet; then
echo "HAS_CHANGES=false" >> $GITHUB_OUTPUT
else
echo "HAS_CHANGES=true" >> $GITHUB_OUTPUT
fi
- name: Commit pinned refs
if: steps.pin-refs.outputs.HAS_CHANGES == 'true'
env:
GRAYBOT_GPG_KEY: ${{ secrets.GRAYBOT_GPG_KEY }}
run: |
echo "$GRAYBOT_GPG_KEY" | gpg --batch --import
export GPG_KEY_ID=$(gpg --list-secret-keys --keyid-format LONG | grep sec | awk '{print $2}' | cut -d/ -f2)
git config --global user.signingkey $GPG_KEY_ID
git config --global commit.gpgSign true
git config --global user.email "automation@graycore.io"
git config --global user.name "Beep Boop"
git add .
git commit -m "chore: pin internal action refs to ${{ steps.pin-refs.outputs.VERSION }}"
git push origin ${{ env.RELEASE_BRANCH }}
pinback:
needs: release-please
if: needs.release-please.outputs.releases_created == 'true'
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v6
with:
ref: main
token: ${{ secrets.GRAYBOT_PIN_BACK_PAT }}
- name: Extract version
id: version
run: |
VERSION="v$(jq -r '."."' .release-please-manifest.json)"
echo "VERSION=${VERSION}" >> $GITHUB_OUTPUT
- name: Restore @main refs
run: |
sed -i "s|uses: graycoreio/github-actions-magento2/\([^@]*\)@[^ #]*|uses: graycoreio/github-actions-magento2/\1@main|g" \
*/action.yml \
$(find .github/workflows \( -name "*.yml" -o -name "*.yaml" \) ! -name "release-please.yml")
- name: Show changed files
run: git diff
- name: Check for changes
id: changes
run: |
if git diff --quiet; then
echo "HAS_CHANGES=false" >> $GITHUB_OUTPUT
else
echo "HAS_CHANGES=true" >> $GITHUB_OUTPUT
fi
- name: Commit and open pinback PR
if: steps.changes.outputs.HAS_CHANGES == 'true'
env:
GRAYBOT_GPG_KEY: ${{ secrets.GRAYBOT_GPG_KEY }}
GH_TOKEN: ${{ secrets.GRAYBOT_PIN_BACK_PAT }}
run: |
echo "$GRAYBOT_GPG_KEY" | gpg --batch --import
export GPG_KEY_ID=$(gpg --list-secret-keys --keyid-format LONG | grep sec | awk '{print $2}' | cut -d/ -f2)
git config --global user.signingkey $GPG_KEY_ID
git config --global commit.gpgSign true
git config --global user.email "automation@graycore.io"
git config --global user.name "Beep Boop"
BRANCH="chore/pinback-${{ steps.version.outputs.VERSION }}"
git checkout -b "$BRANCH"
git add .
git commit -m "chore: restore internal action refs to @main"
git push --force origin "$BRANCH"
EXISTING=$(gh pr list --head "$BRANCH" --json number --jq '.[0].number // empty')
if [ -z "$EXISTING" ]; then
gh pr create \
--base main \
--head "$BRANCH" \
--title "chore: restore internal action refs to @main after ${{ steps.version.outputs.VERSION }}" \
--body "Restores all internal \`graycoreio/github-actions-magento2\` action refs from \`${{ steps.version.outputs.VERSION }}\` back to \`@main\`."
else
echo "PR #$EXISTING already exists for $BRANCH — skipping creation"
fi
+1
View File
@@ -1,2 +1,3 @@
node_modules/ node_modules/
.idea/ .idea/
tmp
+1 -1
View File
@@ -1 +1 @@
{".":"5.0.0"} {".":"7.0.0-rc.0"}
+63
View File
@@ -2,6 +2,69 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
## [7.0.0-rc.0](https://github.com/graycoreio/github-actions-magento2/compare/v6.0.0...v7.0.0-rc.0) (2026-04-28)
### ⚠ BREAKING CHANGES
* **coding-standard:** Much of the "setup" that's built-into the command is removed in favor of a leaner action. This also includes the "on PR, only diff PR contents" behavior. This can be restored, but it shouldn't be the default and should be done as an input.
* **coding-standard-baseline:** remove coding-standard-baseline action ([#223](https://github.com/graycoreio/github-actions-magento2/issues/223))
* **install-test:** You should rely on [Check Extension](https://github.com/graycoreio/github-actions-magento2/blob/main/.github/workflows/check-extension-README.md) instead.
* **unit-test:** remove unit-test action ([#221](https://github.com/graycoreio/github-actions-magento2/issues/221))
* **supported-version:** `include_services` now defaults to `true`. Callers that strictly validate the matrix schema and do not expect a `services` key must explicitly pass `include_services: false`.
### Features
* **coding-standard-baseline:** remove coding-standard-baseline action ([#223](https://github.com/graycoreio/github-actions-magento2/issues/223)) ([953de84](https://github.com/graycoreio/github-actions-magento2/commit/953de845ebf7b5d2c9a24670b380c016bd6efdcd))
* **coding-standard:** add missing composer_auth to require of magento-coding-standard ([3fad3a8](https://github.com/graycoreio/github-actions-magento2/commit/3fad3a89954be09a0f11f04a6c1c7d927fc872eb))
* **coding-standard:** remove pr-diff feature and built-in php setup ([#224](https://github.com/graycoreio/github-actions-magento2/issues/224)) ([d5c744e](https://github.com/graycoreio/github-actions-magento2/commit/d5c744e15544e249f79fa486a073d7020635e48a))
* **coding-standard:** skip composer install if the coding is already installed ([e1a8a81](https://github.com/graycoreio/github-actions-magento2/commit/e1a8a81488c77144786427ff63a99f93cd17b897))
* **install-test:** remove install test ([#222](https://github.com/graycoreio/github-actions-magento2/issues/222)) ([de415ea](https://github.com/graycoreio/github-actions-magento2/commit/de415eaff54507ca24cbecf8916fd1526beb0186))
* **unit-test:** remove unit-test action ([#221](https://github.com/graycoreio/github-actions-magento2/issues/221)) ([98923b2](https://github.com/graycoreio/github-actions-magento2/commit/98923b24c58899779a6a6367e3863d718b09bb8d))
### Bug Fixes
* **check-extension:** mirror path repos to prevent symlink errors with template files ([#218](https://github.com/graycoreio/github-actions-magento2/issues/218)) ([d80befb](https://github.com/graycoreio/github-actions-magento2/commit/d80befbe9b26dfa37af117775544c85ea36b7127)), closes [#217](https://github.com/graycoreio/github-actions-magento2/issues/217)
* **check-extension:** probe vendor dir for MageOS/Magento standards when running phpcs ([#216](https://github.com/graycoreio/github-actions-magento2/issues/216)) ([7799f0f](https://github.com/graycoreio/github-actions-magento2/commit/7799f0f9bf788545bc36924b6528c09c6a8bb09a)), closes [#213](https://github.com/graycoreio/github-actions-magento2/issues/213)
* **supported-version:** default include_services to true ([#215](https://github.com/graycoreio/github-actions-magento2/issues/215)) ([b510ea2](https://github.com/graycoreio/github-actions-magento2/commit/b510ea21e38c97a4852776fc4e57fbcf9917fa9f)), closes [#214](https://github.com/graycoreio/github-actions-magento2/issues/214)
### Miscellaneous Chores
* release 7.0.0-rc.0 ([4001e81](https://github.com/graycoreio/github-actions-magento2/commit/4001e8118b6da28d7c9fd18d3ab127cee03681d3))
## [6.0.0](https://github.com/graycoreio/github-actions-magento2/compare/v5.1.0...v6.0.0) (2026-03-11)
### ⚠ BREAKING CHANGES
* **supported-version:** Adobe has dropped support for elasticsearch and redis in their latest releases of v2.4.8.
### Features
* **supported-version:** add support for MageOS 2.2.0 ([b4526db](https://github.com/graycoreio/github-actions-magento2/commit/b4526dbb52f59ad79b07fedb5fe487424c0b4dea))
* **supported-version:** update for Magento v2.4.8-p4 release ([e6be791](https://github.com/graycoreio/github-actions-magento2/commit/e6be791eed5d2b4f83bb56391e7eab39c52eed59))
* **supported-version:** upgrade opensearch to 2.19.5 ([7e40a62](https://github.com/graycoreio/github-actions-magento2/commit/7e40a62efaff0c31fab1284980fc5400997b211f))
## [5.1.0](https://github.com/graycoreio/github-actions-magento2/compare/v5.0.0...v5.1.0) (2026-02-19)
### Features
* **supported-version:** backport composer 2.9.3 to older mage-os verisons ([48902e8](https://github.com/graycoreio/github-actions-magento2/commit/48902e8e6a748a1328a0e50eff32e717a560975c))
* **supported-version:** bump all composer versions to latest supported version ([c26e84f](https://github.com/graycoreio/github-actions-magento2/commit/c26e84f69361cd53dce853b415656f3af9b44427))
* **supported-version:** bump all nginx versions to latest supported version ([c19912d](https://github.com/graycoreio/github-actions-magento2/commit/c19912dc4bfc83f4649bbd6bff8b8e9366384906))
* **supported-versions:** upgrade 2.4.8-p2/p3 to opensearch 3 ([d29e574](https://github.com/graycoreio/github-actions-magento2/commit/d29e57447582250203ee5cbad561306ca6080ffa))
* **supported-version:** updated matrix for Mage-OS 2.1.0 ([07f8953](https://github.com/graycoreio/github-actions-magento2/commit/07f89530df8396d359c043c6b3a8b429a67465a8))
* **supported-version:** upgrade to compsoer 2.9.5 ([7e70ee9](https://github.com/graycoreio/github-actions-magento2/commit/7e70ee93efb85c48ef312cf4f796bc90acc1b9cf))
### Bug Fixes
* **supported-version:** pin specific composer 2 versions for historic Magento releases ([505179c](https://github.com/graycoreio/github-actions-magento2/commit/505179ce7bdf1b41472d9ba735cc36002b84e2a0))
* using `latest` accidentally output two versions for Magento Open Source ([34ddee6](https://github.com/graycoreio/github-actions-magento2/commit/34ddee6aef5e21f1e4bfa992ff333031b7552c35))
## [5.0.0](https://github.com/graycoreio/github-actions-magento2/compare/v4.0.1...v5.0.0) (2026-02-18) ## [5.0.0](https://github.com/graycoreio/github-actions-magento2/compare/v4.0.1...v5.0.0) (2026-02-18)
+12 -13
View File
@@ -3,9 +3,8 @@
<div align="center"> <div align="center">
![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/graycoreio/github-actions-magento2) ![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/graycoreio/github-actions-magento2)
[![Unit Test](https://github.com/graycoreio/github-actions-magento2/actions/workflows/_internal-unit.yaml/badge.svg)](https://github.com/graycoreio/github-actions-magento2/actions/workflows/_internal-unit.yaml) [![Integration Test](https://img.shields.io/github/actions/workflow/status/graycoreio/github-actions-magento2/_internal-integration.yaml?label=Integration%20Test&labelColor=1a1a1a)](https://github.com/graycoreio/github-actions-magento2/actions/workflows/_internal-integration.yaml)
[![Integration Test](https://github.com/graycoreio/github-actions-magento2/actions/workflows/_internal-integration.yaml/badge.svg)](https://github.com/graycoreio/github-actions-magento2/actions/workflows/_internal-integration.yaml) [![MageCheck](https://img.shields.io/github/actions/workflow/status/graycoreio/github-actions-magento2/_internal_check_extension.yaml?label=Check%20Extension%20Test&labelColor=1a1a1a)](https://github.com/graycoreio/github-actions-magento2/actions/workflows/_internal_check_extension.yaml)
[![Installation Test](https://github.com/graycoreio/github-actions-magento2/actions/workflows/_internal-install.yaml/badge.svg)](https://github.com/graycoreio/github-actions-magento2/actions/workflows/_internal-install.yaml)
</div> </div>
@@ -24,13 +23,13 @@ Opinionated Github Actions and Workflows to make building, testing, and maintain
## Actions ## Actions
| Action Name | Description | | Action Name | Description |
| ------------------------------------------------------ | ----------------------------------------------------------------------------------------- | | ------------------------------------------------------------ | ----------------------------------------------------------------------------------------- |
| [Unit Test](./unit-test/README.md) | A Github Action that runs the Unit Tests a Magento Package | | [Fix Magento Install](./fix-magento-install/README.md) | A Github Action that fixes Magento before `composer install` |
| [Fix Magento Install](./fix-magento-install/README.md) | A Github Action that fixes Magento before `composer install` | | [Cache Magento](./cache-magento/README.md) | A Github Action that creates a composer cache for a Magento extension or store. |
| [Cache Magento](./cache-magento/README.md) | A Github Action that creates a composer cache for a Magento extension or store. | | [Setup Magento](./setup-magento/README.md) | A Github Action that sets up Magento before `composer install` for an extension or store. |
| [Setup Magento](./setup-magento/README.md) | A Github Action that sets up Magento before `composer install` for an extension or store. | | [Get Magento Version](./get-magento-version/README.md) | A Github Action that computes the installed Magento version. |
| [Get Magento Version](./get-magento-version/README.md) | A Github Action that computes the installed Magento version. | | [Get Composer Version](./get-composer-version/README.md) | A Github Action that computes an installed Composer version. |
| [Installation Test](./installation-test/README.md) | A Github Action that tests the installability of a Magento Package | | [Coding Standard](./coding-standard/README.md) | A Github Action that runs the Magento Coding Standard. |
| [Semver Compare](./semver-compare/README.md) | A Github Action that semantically compares two versions | | [Semver Compare](./semver-compare/README.md) | A Github Action that semantically compares two versions |
| [Supported Version](./supported-version/README.md) | A Github Action that computes the currently supported Github Actions Matrix for Magento 2 | | [Supported Version](./supported-version/README.md) | A Github Action that computes the currently supported Github Actions Matrix for Magento 2 |
@@ -0,0 +1,24 @@
<?php
namespace Graycore\DemoPackage\Test\Integration;
use Magento\Framework\View\Element\Template;
use Magento\TestFramework\Helper\Bootstrap;
/**
* Fails when the extension is installed as a symlink (default Composer path repo behavior)
* because Magento's template engine cannot resolve .phtml files through symlinks.
* Requires COMPOSER_MIRROR_PATH_REPOS=1 during composer install.
*/
class TemplateRenderTest extends \PHPUnit\Framework\TestCase
{
/**
* @magentoAppArea frontend
*/
public function testTemplateRendersWithoutSymlinkError()
{
$block = Bootstrap::getObjectManager()->create(Template::class);
$block->setTemplate('Graycore_DemoPackage::demo.phtml');
$this->assertNotEmpty($block->toHtml());
}
}
@@ -0,0 +1,2 @@
<?php /** @var \Magento\Framework\View\Element\Template $block */ ?>
<div>demo</div>
-3
View File
@@ -10,7 +10,6 @@ See the [action.yml](./action.yml)
| Input | Description | Required | Default | | Input | Description | Required | Default |
| ------------------ | -------------------------------------------------------------------------------------- | -------- | ------------ | | ------------------ | -------------------------------------------------------------------------------------- | -------- | ------------ |
| composer_cache_key | A key to version the composer cache. Can be incremented if you need to bust the cache. | false | '__mageos' | | composer_cache_key | A key to version the composer cache. Can be incremented if you need to bust the cache. | false | '__mageos' |
| mode | "The mode for setup, one of: `extension` or `store`." | true | N/A |
### Usage ### Usage
@@ -31,8 +30,6 @@ jobs:
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v6
- uses: graycoreio/github-actions-magento2/cache-magento@main - uses: graycoreio/github-actions-magento2/cache-magento@main
with:
mode: 'store'
id: cache-magento id: cache-magento
- run: composer install - run: composer install
-4
View File
@@ -8,10 +8,6 @@ inputs:
default: "__mageos" default: "__mageos"
description: A key to version the composer cache. Can be incremented if you need to bust the cache. description: A key to version the composer cache. Can be incremented if you need to bust the cache.
mode:
required: true
description: "The mode for setup, one of: `extension` or `store`."
outputs: outputs:
cache-hit: cache-hit:
description: "A boolean value to indicate an exact match was found for the key" description: "A boolean value to indicate an exact match was found for the key"
-45
View File
@@ -1,45 +0,0 @@
# Magento 2 Coding Standard Action
This Github Action automates the enforcement of Magento Coding Standards. It ensures code consistency and quality by checking code against Magento's specific coding guidelines.
## Inputs
For detailed descriptions of each input, refer to [action.yml](./action.yml).
## Why a Baseline?
Running PHP CodeSniffer (PHPCS) with a baseline is crucial for managing legacy code. It allows you to set a "starting point" for code quality, ignoring existing issues while ensuring no new issues are introduced. This approach is especially useful for large codebases where addressing all existing issues at once is not feasible. The baseline serves as a record of known issues, enabling teams to focus on maintaining and gradually improving code quality in new or modified code.
## Usage Example
The following example demonstrates how to set up the action in your workflow:
Check how this action is used in mage-os [here](https://github.com/mage-os/mageos-magento2/blob/2.4-develop/.github/workflows/coding-standard-baseline.yml).
```yml
name: Coding Standard Baseline
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
coding-standard:
runs-on: ubuntu-latest
steps:
- uses: graycoreio/github-actions-magento2/coding-standard-baseline@main
with:
head_repo: "mage-os/mageos-magento2"
head_ref: "main"
php_version: "8.2"
composer_version: "2"
version: "*"
severity: "5"
warning_severity: "8"
error_severity: "8"
baseline_version: "*"
```
-151
View File
@@ -1,151 +0,0 @@
name: "M2 Coding Standard"
author: "Mage-OS"
description: "A Github Action that runs the Magento Coding Standard."
inputs:
php_version:
type: string
required: true
default: "8.2"
description: "PHP version used to do the coding standard check (default: 8.2)."
composer_version:
type: string
required: true
default: "2"
description: "The version of composer to use (default: 2)."
version:
type: string
required: false
default: "*"
description: "The version of the coding standard to use (default: latest)."
severity:
type: string
required: false
default: "5"
description: "The minimum severity required to display an error or warning (default: 5)"
warning_severity:
type: string
required: false
default: "8"
description: "The minimum severity required to display a warning (default: 8)."
error_severity:
type: string
required: false
default: "8"
description: "The minimum severity required to display an error (default: 8)."
baseline_version:
type: string
required: false
default: "*"
description: "The version of phpcs baseline to use (default: latest)."
head_repo:
type: string
required: true
description: "The repository full name of the head branch. E.g.: mage-os/mageos-magento2"
head_ref:
type: string
required: true
description: "The branch name of the head branch. E.g.: main"
runs:
using: composite
steps:
- name: Checkout head
uses: actions/checkout@v6
with:
ref: ${{ inputs.head_ref }}
repository: ${{ inputs.head_repo }}
- uses: dorny/paths-filter@v2
name: Filter changed files
id: filter
with:
list-files: shell
filters: |
baseline:
- modified: '**/**.{php,phtml,graphqls,less,css,html,xml,js}'
phpcs:
- added|modified: '**/**.{php,phtml,graphqls,less,css,html,xml,js}'
- name: Check changed files for PHPcs
if: steps.filter.outputs.phpcs == 'true'
shell: bash
run: |
echo "One or more files relevant to PHPCS have changed."
echo "List all the files that have been added or changed: ${{ steps.filter.outputs.phpcs_files }}"
- name: Setup PHP
if: steps.filter.outputs.phpcs == 'true'
uses: shivammathur/setup-php@v2
with:
php-version: ${{ inputs.php_version }}
tools: composer:v${{ inputs.composer_version }}
coverage: none
- name: Install coding standards
if: steps.filter.outputs.phpcs == 'true'
shell: bash
run: |
composer create-project --no-plugins --no-dev \
magento/magento-coding-standard \
magento-coding-standard "${{ github.event.inputs.version || '*' }}"
- name: Install phpcs baseline
if: steps.filter.outputs.phpcs == 'true'
working-directory: magento-coding-standard
shell: bash
run: |
composer config --no-plugins allow-plugins.digitalrevolution/php-codesniffer-baseline true
composer require --dev "digitalrevolution/php-codesniffer-baseline: ${{ github.event.inputs.baseline_version || '*' }}"
- name: Checkout base
if: steps.filter.outputs.phpcs == 'true'
uses: actions/checkout@v6
with:
ref: ${{github.event.pull_request.base.ref}}
repository: ${{github.event.pull_request.base.repo.full_name}}
path: base
- name: Create phpcs.baseline.xml from base
shell: bash
working-directory: base
if: steps.filter.outputs.baseline == 'true'
run: |
php ${{ github.workspace }}/magento-coding-standard/vendor/bin/phpcs --standard=Magento2 \
$([ -n "${{ inputs.severity }}" ] && echo "--severity=${{ inputs.severity }}") \
$([ -n "${{ inputs.warning_severity }}" ] && echo "--warning-severity=${{ inputs.warning_severity }}") \
$([ -n "${{ inputs.error_severity }}" ] && echo "--error-severity=${{ inputs.error_severity }}") \
--report=\\DR\\CodeSnifferBaseline\\Reports\\Baseline --report-file=phpcs.baseline.xml \
${{ steps.filter.outputs.baseline_files }} || /bin/true
- name: Copy baseline to head
if: steps.filter.outputs.baseline == 'true'
shell: bash
run: |
cp ${{ github.workspace }}/base/phpcs.baseline.xml ${{ github.workspace }}/magento-coding-standard/phpcs.baseline.xml
# Since we ran phpcs in the base folder, the files in phpcs.baseline.xml contain the base folder in the path.
# We need to remove /base/ so that the phpcs can locate the correct files.
- name: Remove base dir from phpcs baseline
if: steps.filter.outputs.baseline == 'true'
shell: bash
run: |
sed -i "s|/base/|/|" ${{ github.workspace }}/magento-coding-standard/phpcs.baseline.xml
- name: Execute phpcs on head for changed files
shell: bash
if: steps.filter.outputs.phpcs == 'true'
run: |
php ${{ github.workspace }}/magento-coding-standard/vendor/bin/phpcs --standard=Magento2 \
$([ -n "${{ inputs.severity }}" ] && echo "--severity=${{ inputs.severity }}") \
$([ -n "${{ inputs.warning_severity }}" ] && echo "--warning-severity=${{ inputs.warning_severity }}") \
$([ -n "${{ inputs.error_severity }}" ] && echo "--error-severity=${{ inputs.error_severity }}") \
${{ steps.filter.outputs.phpcs_files }}
+12 -2
View File
@@ -11,6 +11,8 @@ See the [action.yml](./action.yml)
## Usage ## Usage
The caller is responsible for checking out the repository and setting up PHP before calling this action.
```yml ```yml
name: Coding Standard name: Coding Standard
@@ -26,11 +28,19 @@ jobs:
coding-standard: coding-standard:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v6
- uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
tools: composer:v2
coverage: none
- uses: graycoreio/github-actions-magento2/coding-standard@main - uses: graycoreio/github-actions-magento2/coding-standard@main
with: with:
path: app/code # Optional, defaults to .
version: 25 # Optional, will use the latest if omitted. version: 25 # Optional, will use the latest if omitted.
path: app/code # Optional, will be used when event is not a pull request.
severity: 8 # Optional, will use phpcs default of 5 if not specified. severity: 8 # Optional, will use phpcs default of 5 if not specified.
warning_severity: 4 # Optional, will use severity value if not specified. warning_severity: 4 # Optional, will use severity value if not specified.
error_severity: 7 # Optional, will use severity value if not specified. error_severity: 7 # Optional, will use severity value if not specified.
``` ```
+62 -54
View File
@@ -3,35 +3,25 @@ author: "Graycore"
description: "A Github Action that runs the Magento Coding Standard." description: "A Github Action that runs the Magento Coding Standard."
inputs: inputs:
php_version:
required: true
default: "8.1"
description: "PHP version used to do the coding standard check."
composer_version:
required: true
default: "2"
description: "The version of composer to use."
path: path:
required: true required: true
default: 'app/code' default: '.'
description: "The directory (relative to the project root) in which the coding standard will be checked. Used when the event is not a pull request." description: "The directory containing the code to check."
version: version:
required: false required: false
description: "The version of the coding standard to use. If not provided, will use the latest version." description: "The version of the coding standard to use. If not provided, will use the latest version."
severity: severity:
required: false required: false
default: "" default: ""
description: "The minimum severity required to display an error or warning (default: 5)" description: "The minimum severity required to display an error or warning (default: 5)"
warning_severity: warning_severity:
required: false required: false
default: "" default: ""
description: "The minimum severity required to display a warning" description: "The minimum severity required to display a warning"
error_severity: error_severity:
required: false required: false
default: "" default: ""
@@ -42,72 +32,90 @@ inputs:
default: 'false' default: 'false'
required: false required: false
composer_auth:
required: false
default: ""
description: "Composer authentication credentials (contents of auth.json as a JSON string)"
runs: runs:
using: composite using: composite
steps: steps:
- name: Checkout Project - name: Check if Coding Standard is already installed
uses: actions/checkout@v6 id: check-installed
with:
fetch-depth: 0
path: project
- name: Create Standard Directory
shell: bash shell: bash
run: mkdir standard working-directory: ${{ inputs.path }}
run: |
- name: Set PHP Version if [ -d "vendor/magento/magento-coding-standard" ] || [ -d "vendor/mage-os/magento-coding-standard" ]; then
uses: shivammathur/setup-php@v2 echo "installed=true" >> $GITHUB_OUTPUT
with: else
php-version: ${{ inputs.php_version }} echo "installed=false" >> $GITHUB_OUTPUT
tools: composer:v${{ inputs.composer_version }} fi
coverage: none
- name: Get Composer Version - name: Get Composer Version
uses: graycoreio/github-actions-magento2/get-composer-version@main uses: graycoreio/github-actions-magento2/get-composer-version@v7.0.0-rc.0
id: get-composer-version id: get-composer-version
if: steps.check-installed.outputs.installed != 'true'
- name: Check if allow-plugins option is available for this version of composer - name: Check if allow-plugins option is available for this version of composer
uses: graycoreio/github-actions-magento2/semver-compare@main uses: graycoreio/github-actions-magento2/semver-compare@v7.0.0-rc.0
id: is-allow-plugins-available
if: steps.check-installed.outputs.installed != 'true'
with: with:
version: 2.2 version: 2.2
compare_against: ${{ steps.get-composer-version.outputs.version }} compare_against: ${{ steps.get-composer-version.outputs.version }}
id: is-allow-plugins-available
- name: Enable dealerdirect/phpcodesniffer-composer-installer plugin - name: Enable dealerdirect/phpcodesniffer-composer-installer plugin
shell: bash shell: bash
working-directory: standard working-directory: ${{ inputs.path }}
run: composer config allow-plugins.dealerdirect/phpcodesniffer-composer-installer true --global run: composer config allow-plugins.dealerdirect/phpcodesniffer-composer-installer true --global
if: steps.is-allow-plugins-available.outputs.result < 1 if: steps.check-installed.outputs.installed != 'true' && steps.is-allow-plugins-available.outputs.result < 1
- name: Install Coding Standard - name: Install Coding Standard
shell: bash shell: bash
working-directory: standard working-directory: ${{ inputs.path }}
run: composer require "magento/magento-coding-standard:${{ inputs.version || '*' }}" run: composer require "magento/magento-coding-standard:${{ inputs.version || '*' }}" "magento/php-compatibility-fork"
if: steps.check-installed.outputs.installed != 'true'
env:
COMPOSER_AUTH: ${{ inputs.composer_auth }}
- name: Register Coding Standard - name: Register Coding Standard
shell: bash shell: bash
working-directory: standard working-directory: ${{ inputs.path }}
run: vendor/bin/phpcs --config-set installed_paths ${{ github.workspace }}/standard/vendor/magento/magento-coding-standard,${{ github.workspace }}/standard/vendor/magento/php-compatibility-fork run: |
if [ -d vendor/magento/magento-coding-standard ]; then
CODING_STANDARD_VENDOR=magento
elif [ -d vendor/mage-os/magento-coding-standard ]; then
CODING_STANDARD_VENDOR=mage-os
else
echo "No magento-coding-standard directory found under vendor/magento or vendor/mage-os."
echo "Trusting dealerdirect/phpcodesniffer-composer-installer to have registered installed_paths."
exit 0
fi
vendor/bin/phpcs --config-set installed_paths \
"vendor/${CODING_STANDARD_VENDOR}/magento-coding-standard,vendor/${CODING_STANDARD_VENDOR}/php-compatibility-fork"
if: steps.check-installed.outputs.installed != 'true'
- name: Set ignore warnings flag - name: Set ignore warnings flag
shell: bash shell: bash
working-directory: standard working-directory: ${{ inputs.path }}
run: vendor/bin/phpcs --config-set ignore_warnings_on_exit 1 run: vendor/bin/phpcs --config-set ignore_warnings_on_exit 1
if: inputs.ignore_warnings == 'true' if: inputs.ignore_warnings == 'true'
- name: Get Changed Files
shell: bash
working-directory: project
id: changed-files
run: echo "files=$(git diff --name-only --diff-filter=ACMRT ${{ github.event.pull_request.base.sha }} ${{ github.sha }} | xargs)" >> $GITHUB_OUTPUT
if: github.event_name == 'pull_request'
- name: Coding Standard Check - name: Coding Standard Check
shell: bash shell: bash
working-directory: ${{ inputs.path }}
run: | run: |
../standard/vendor/bin/phpcs --standard=Magento2 \ FLAGS=()
$([ -n "${{ inputs.severity }}" ] && echo "--severity=${{ inputs.severity }}") \ [ -n "${{ inputs.severity }}" ] && FLAGS+=(--severity=${{ inputs.severity }}) || true
$([ -n "${{ inputs.warning_severity }}" ] && echo "--warning-severity=${{ inputs.warning_severity }}") \ [ -n "${{ inputs.warning_severity }}" ] && FLAGS+=(--warning-severity=${{ inputs.warning_severity }}) || true
$([ -n "${{ inputs.error_severity }}" ] && echo "--error-severity=${{ inputs.error_severity }}") \ [ -n "${{ inputs.error_severity }}" ] && FLAGS+=(--error-severity=${{ inputs.error_severity }}) || true
${{ github.event_name == 'pull_request' && steps.changed-files.outputs.files || inputs.path }}
working-directory: project if [ -f .phpcs.xml ] || [ -f phpcs.xml ] || [ -f .phpcs.xml.dist ] || [ -f phpcs.xml.dist ]; then
vendor/bin/phpcs "${FLAGS[@]}" .
else
vendor/bin/phpcs --standard=Magento2 --ignore=*vendor/* "${FLAGS[@]}" .
fi
branding:
icon: "code"
color: "green"
+40
View File
@@ -0,0 +1,40 @@
# What belongs in a composite action
A composite action should do one thing. The guiding test: **can a caller reasonably want to skip part of what this action does, independently of the rest?** If yes, those parts should be separate actions that the caller composes themselves.
## Good fits for a composite action
**A single tool installation paired with its execution.** Install the tool, run it, done. `coding-standard` installs PHPCS and runs it. `fix-magento-install` applies a known set of patches. The install and the run are not independently useful — splitting them would add complexity with no benefit.
**A utility that extracts and exposes a single value.** `get-composer-version`, `get-magento-version`, and `semver-compare` each run one or two commands and write an output. These exist because their output is needed inline by the next step in the same job. That is the right scope for a composite action.
**A setup operation with a well-defined end state.** `cache-magento` leaves the Composer cache populated. `setup-magento` leaves a Magento project at a known path. The caller gets a clear postcondition and nothing else.
## Signs an action is too broad
**It bundles independent setup concerns with execution.** Imagine a `unit-test` action that sets up PHP, installs Composer dependencies, and then runs the test command. These three things can each be wanted or skipped independently. A caller whose job already has PHP set up cannot avoid step 1. A caller that wants to run tests against already-installed dependencies cannot avoid step 2.
The right scope is just the execution step:
```yaml
inputs:
test_command:
required: true
default: composer run test
source_folder:
required: true
default: .
runs:
using: composite
steps:
- run: ${{ inputs.test_command }}
shell: bash
working-directory: ${{ inputs.source_folder }}
```
The caller is then responsible for composing `setup-php`, `cache-magento`, and `composer install` before calling it — each of which is already a separate action in this repo.
**It reimplements logic that already exists in another action.** If a new action rolls its own Composer caching inline rather than calling `cache-magento`, that creates two different cache key strategies in the same repo and makes it harder to update caching behavior consistently.
**The name describes a pipeline, not a step.** Names like "install and test" or "build and deploy" are warning signs. A good action name describes what state it produces or what it checks — not a sequence of operations.
+1 -1
View File
@@ -9,7 +9,7 @@ inputs:
runs: runs:
using: "composite" using: "composite"
steps: steps:
- uses: graycoreio/github-actions-magento2/get-magento-version@main - uses: graycoreio/github-actions-magento2/get-magento-version@v7.0.0-rc.0
id: init-magento-get-magento-version id: init-magento-get-magento-version
with: with:
working-directory: ${{ inputs.magento_directory }} working-directory: ${{ inputs.magento_directory }}
-48
View File
@@ -1,48 +0,0 @@
# Magento 2 Package Installation Test Action
A Github Action that tests the installability of a Magento Package
## Inputs
See the [action.yml](./action.yml)
## Usage
```yml
name: Installation Test
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
compute_matrix:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.supported-version.outputs.matrix }}
steps:
- uses: actions/checkout@v6
- uses: graycoreio/github-actions-magento2/supported-version@main
id: supported-version
- run: echo ${{ steps.supported-version.outputs.matrix }}
install-test:
needs: compute_matrix
strategy:
matrix: ${{ fromJSON(needs.compute_matrix.outputs.matrix) }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: graycoreio/github-actions-magento2/installation-test@main
with:
composer_version: ${{ matrix.composer }}
php_version: ${{ matrix.php }}
magento_version: ${{ matrix.magento }}
composer_auth: ${{ secrets.COMPOSER_AUTH }}
package_name: vendor/package
source_folder: $GITHUB_WORKSPACE
```
-122
View File
@@ -1,122 +0,0 @@
name: "Installation Test"
author: "Graycore"
description: " A Github Action that tests the installability of a Magento Package"
inputs:
php_version:
required: true
default: "8.1"
description: "PHP Version to use"
cache_key:
required: true
default: "2"
description: "The cache key used to hold Composer Packages"
composer_version:
required: true
default: "2"
description: "The version of composer to use"
use_local_source:
required: false
default: "true"
description: "Whether or not you want to test your local package or not."
source_folder:
required: true
default: $GITHUB_WORKSPACE
description: "The source folder of the package"
package_name:
required: true
description: "The name of the package"
magento_directory:
required: true
default: "../magento2"
description: "The folder where Magento will be installed"
magento_version:
required: true
default: "magento/project-community-edition"
description: "The version of Magento to test against"
magento_repository:
required: true
default: "https://mirror.mage-os.org/"
description: "Where to install Magento from"
composer_cache_key:
required: false
default: ''
description: A key to version the composer cache. Can be incremented if you need to bust the cache.
composer_auth:
required: false
description: "Composer Authentication Credentials"
runs:
using: "composite"
steps:
- name: Set PHP Version
uses: shivammathur/setup-php@v2
with:
php-version: ${{ inputs.php_version }}
- run: composer self-update ${{ inputs.composer_version }}
name: Pin to Composer Version ${{ inputs.composer_version }}
if: contains(inputs.composer_version, '.') == true
shell: bash
- run: composer self-update --${{ inputs.composer_version }}
name: Pin to Composer Version ${{ inputs.composer_version }} (Range)
if: contains(inputs.composer_version, '.') == false
shell: bash
- run: composer create-project --repository-url="${{ inputs.magento_repository }}" "${{ inputs.magento_version }}" ${{ inputs.magento_directory }} --no-install
shell: bash
env:
COMPOSER_AUTH: ${{ inputs.composer_auth }}
name: Create Magento ${{ inputs.magento_version }} Project
- name: Get Composer Cache Directory
shell: bash
working-directory: ${{ inputs.magento_directory }}
id: composer-cache
run: |
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: "Cache Composer Packages"
uses: actions/cache@v5
with:
key: "composer | v5 | ${{ inputs.composer_cache_key }} | ${{ hashFiles('composer.lock') }} | ${{ runner.os }} | ${{ inputs.composer_version }} | ${{ inputs.php_version }} | ${{ inputs.magento_version }}"
path: ${{ steps.composer-cache.outputs.dir }}
- run: composer config repositories.local path ${{ inputs.source_folder }}
name: Add Github Repo for Testing
working-directory: ${{ inputs.magento_directory }}
shell: bash
if: ${{ inputs.use_local_source == 'true' }}
- run: |
composer config --no-interaction allow-plugins.dealerdirect/phpcodesniffer-composer-installer true
composer config --no-interaction allow-plugins.laminas/laminas-dependency-plugin true
composer config --no-interaction allow-plugins.magento/* true
name: Fixup Composer Plugins
shell: bash
working-directory: ${{ inputs.magento_directory }}
if: ${{ !startsWith(inputs.composer_version, '1') }}
- run: composer require ${{ inputs.package_name }} "@dev" --no-update && composer install
name: Require and attempt install
working-directory: ${{ inputs.magento_directory }}
shell: bash
env:
COMPOSER_CACHE_DIR: ${{ steps.composer-cache.outputs.dir }}
COMPOSER_AUTH: ${{ inputs.composer_auth }}
branding:
icon: "code"
color: "green"
+2 -2
View File
@@ -1,12 +1,12 @@
{ {
"name": "@graycoreio/github-actions-magento2", "name": "@graycoreio/github-actions-magento2",
"version": "5.0.0", "version": "7.0.0-rc.0",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@graycoreio/github-actions-magento2", "name": "@graycoreio/github-actions-magento2",
"version": "5.0.0", "version": "7.0.0-rc.0",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@actions/core": "^1.11.1" "@actions/core": "^1.11.1"
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "@graycoreio/github-actions-magento2", "name": "@graycoreio/github-actions-magento2",
"version": "5.0.0", "version": "7.0.0-rc.0",
"description": "Github Actions for Magento 2", "description": "Github Actions for Magento 2",
"scripts": { "scripts": {
"test": "cd supported-version && npm run test && cd -", "test": "cd supported-version && npm run test && cd -",
+1 -1
View File
@@ -90,7 +90,7 @@ runs:
env: env:
COMPOSER_AUTH: ${{ inputs.composer_auth }} COMPOSER_AUTH: ${{ inputs.composer_auth }}
- uses: graycoreio/github-actions-magento2/fix-magento-install@main - uses: graycoreio/github-actions-magento2/fix-magento-install@v7.0.0-rc.0
name: Fix Magento Out of Box Install Issues name: Fix Magento Out of Box Install Issues
with: with:
magento_directory: ${{ steps.setup-magento-compute-directory.outputs.MAGENTO_DIRECTORY }} magento_directory: ${{ steps.setup-magento-compute-directory.outputs.MAGENTO_DIRECTORY }}
+1 -1
View File
@@ -24,7 +24,7 @@ inputs:
include_services: include_services:
required: false required: false
default: "false" default: "true"
description: "Whether to include a `services` key in each matrix entry with GitHub Actions service configurations." description: "Whether to include a `services` key in each matrix entry with GitHub Actions service configurations."
outputs: outputs:
+32 -32
View File
File diff suppressed because one or more lines are too long
@@ -78,16 +78,17 @@ describe('getCurrentlySupportedVersions for magento-open-source', () => {
'magento/project-community-edition:2.4.7-p8', 'magento/project-community-edition:2.4.7-p8',
'magento/project-community-edition:2.4.8-p3', 'magento/project-community-edition:2.4.8-p3',
]], ]],
['2026-03-15T00:00:00Z', 'Day after v2.4.6 EoL', [ ['2026-03-15T00:00:00Z', 'Day after v2.4.6-p14 release', [
'magento/project-community-edition:2.4.7-p8', 'magento/project-community-edition:2.4.6-p14',
'magento/project-community-edition:2.4.8-p3', 'magento/project-community-edition:2.4.7-p9',
'magento/project-community-edition:2.4.8-p4',
]], ]],
['2027-04-09T00:00:00Z', 'Day of v2.4.7 EoL', [ ['2027-04-09T00:00:00Z', 'Day of v2.4.7 EoL', [
'magento/project-community-edition:2.4.7-p8', 'magento/project-community-edition:2.4.7-p9',
'magento/project-community-edition:2.4.8-p3', 'magento/project-community-edition:2.4.8-p4',
]], ]],
['2027-04-10T00:00:00Z', 'Day after v2.4.7 EoL', [ ['2027-04-10T00:00:00Z', 'Day after v2.4.7 EoL', [
'magento/project-community-edition:2.4.8-p3', 'magento/project-community-edition:2.4.8-p4',
]], ]],
])( ])(
'supportedVersions for %s', 'supportedVersions for %s',
@@ -11,6 +11,13 @@ describe('getMatrixForKind for mage-os', () => {
expect(result.include).toBeDefined(); expect(result.include).toBeDefined();
}); });
it('returns a single-element matrix for with a matrix "magento" for `latest`', () => {
const result = getMatrixForKind("latest", project);
expect(result.magento.length).toEqual(1);
expect(result.include.length).toEqual(1);
expect(result.magento[0]).toEqual(result.include[0].magento);
});
it('returns a matrix for `currently-supported`', () => { it('returns a matrix for `currently-supported`', () => {
const result = getMatrixForKind("currently-supported", project); const result = getMatrixForKind("currently-supported", project);
@@ -46,6 +53,13 @@ describe('getMatrixForKind for mage-os', () => {
expect(result.magento).toBeDefined(); expect(result.magento).toBeDefined();
expect(result.include).toBeDefined(); expect(result.include).toBeDefined();
}); });
it('returns a single-element matrix for with a matrix "magento" for `nightly`', () => {
const result = getMatrixForKind("nightly", project);
expect(result.magento.length).toEqual(1);
expect(result.include.length).toEqual(1);
expect(result.magento[0]).toEqual(result.include[0].magento);
});
it('errors for invalid `custom``', () => { it('errors for invalid `custom``', () => {
expect(() => getMatrixForKind("custom", project)).toThrowError(); expect(() => getMatrixForKind("custom", project)).toThrowError();
@@ -64,11 +78,18 @@ describe('getMatrixForKind for magento-open-source', () => {
it('returns a matrix for `latest`', () => { it('returns a matrix for `latest`', () => {
const result = getMatrixForKind("latest", project); const result = getMatrixForKind("latest", project);
console.log(result);
expect(result.magento).toBeDefined(); expect(result.magento).toBeDefined();
expect(result.include).toBeDefined(); expect(result.include).toBeDefined();
}); });
it('returns a single-element matrix for with a matrix "magento" for `latest`', () => {
const result = getMatrixForKind("latest", project);
expect(result.magento.length).toEqual(1);
expect(result.include.length).toEqual(1);
expect(result.magento[0]).toEqual(result.include[0].magento);
});
it('returns a matrix for `currently-supported`', () => { it('returns a matrix for `currently-supported`', () => {
const result = getMatrixForKind("currently-supported", project); const result = getMatrixForKind("currently-supported", project);
@@ -97,6 +118,13 @@ describe('getMatrixForKind for magento-open-source', () => {
expect(result.include).toBeDefined(); expect(result.include).toBeDefined();
}); });
it('returns a single-element matrix for with a matrix "magento" for `nightly`', () => {
const result = getMatrixForKind("nightly", project);
expect(result.magento.length).toEqual(1);
expect(result.include.length).toEqual(1);
expect(result.magento[0]).toEqual(result.include[0].magento);
});
it('returns a matrix for valid multiple `custom`', () => { it('returns a matrix for valid multiple `custom`', () => {
const result = getMatrixForKind("custom", project, "magento/project-community-edition:2.4.2,magento/project-community-edition:2.4.3"); const result = getMatrixForKind("custom", project, "magento/project-community-edition:2.4.2,magento/project-community-edition:2.4.3");
@@ -1,36 +1,36 @@
{ {
"mage-os/project-community-edition": { "mage-os/project-community-edition": {
"magento": "mage-os/project-community-edition", "magento": "mage-os/project-community-edition",
"php": 8.4, "php": 8.4,
"composer": "2.8.8", "composer": "2.9.5",
"mysql": "mysql:8.4", "mysql": "mysql:8.4",
"opensearch": "opensearchproject/opensearch:2.19.1", "opensearch": "opensearchproject/opensearch:3",
"rabbitmq": "rabbitmq:4.0-management", "rabbitmq": "rabbitmq:4.1-management",
"redis": "redis:7.2", "valkey": "valkey/valkey:8.0",
"varnish": "varnish:7.6", "varnish": "varnish:7.7",
"nginx": "nginx:1.26", "nginx": "nginx:1.28",
"os": "ubuntu-latest", "os": "ubuntu-latest",
"release": "2025-10-16T00:00:00+0000", "release": "2026-03-10T00:00:00+0000",
"eol": "2028-10-17T00:00:00+0000" "eol": "2029-03-10T00:00:00+0000"
}, },
"mage-os/project-community-edition:next": { "mage-os/project-community-edition:next": {
"magento": "mage-os/project-community-edition:next", "magento": "mage-os/project-community-edition:next",
"php": 8.4, "php": 8.4,
"composer": "2.8.8", "composer": "2.9.5",
"mysql": "mysql:8.4", "mysql": "mysql:8.4",
"opensearch": "opensearchproject/opensearch:2.19.1", "opensearch": "opensearchproject/opensearch:3",
"rabbitmq": "rabbitmq:4.0-management", "rabbitmq": "rabbitmq:4.1-management",
"redis": "redis:7.2", "valkey": "valkey/valkey:8.0",
"varnish": "varnish:7.6", "varnish": "varnish:7.7",
"nginx": "nginx:1.26", "nginx": "nginx:1.28",
"os": "ubuntu-latest", "os": "ubuntu-latest",
"release": "2025-10-16T00:00:00+0000", "release": "2026-03-10T00:00:00+0000",
"eol": "2028-10-17T00:00:00+0000" "eol": "2029-03-10T00:00:00+0000"
}, },
"mage-os/project-community-edition:>=1.0 <1.1": { "mage-os/project-community-edition:>=1.0 <1.1": {
"magento": "mage-os/project-community-edition:>=1.0 <1.1", "magento": "mage-os/project-community-edition:>=1.0 <1.1",
"php": 8.3, "php": 8.3,
"composer": "2.7.4", "composer": "2.9.5",
"mysql": "mariadb:10.6", "mysql": "mariadb:10.6",
"elasticsearch": "elasticsearch:8.11.4", "elasticsearch": "elasticsearch:8.11.4",
"rabbitmq": "rabbitmq:3.13-management", "rabbitmq": "rabbitmq:3.13-management",
@@ -44,7 +44,7 @@
"mage-os/project-community-edition:>=1.1 <1.2": { "mage-os/project-community-edition:>=1.1 <1.2": {
"magento": "mage-os/project-community-edition:>=1.1 <1.2", "magento": "mage-os/project-community-edition:>=1.1 <1.2",
"php": 8.4, "php": 8.4,
"composer": "2.8.8", "composer": "2.9.5",
"mysql": "mysql:8.4", "mysql": "mysql:8.4",
"opensearch": "opensearchproject/opensearch:2.19.1", "opensearch": "opensearchproject/opensearch:2.19.1",
"rabbitmq": "rabbitmq:4.0-management", "rabbitmq": "rabbitmq:4.0-management",
@@ -58,7 +58,7 @@
"mage-os/project-community-edition:>=1.2 <1.3": { "mage-os/project-community-edition:>=1.2 <1.3": {
"magento": "mage-os/project-community-edition:>=1.2 <1.3", "magento": "mage-os/project-community-edition:>=1.2 <1.3",
"php": 8.4, "php": 8.4,
"composer": "2.8.8", "composer": "2.9.5",
"mysql": "mysql:8.4", "mysql": "mysql:8.4",
"opensearch": "opensearchproject/opensearch:2.19.1", "opensearch": "opensearchproject/opensearch:2.19.1",
"rabbitmq": "rabbitmq:4.0-management", "rabbitmq": "rabbitmq:4.0-management",
@@ -72,7 +72,7 @@
"mage-os/project-community-edition:>=1.3 <1.4": { "mage-os/project-community-edition:>=1.3 <1.4": {
"magento": "mage-os/project-community-edition:>=1.2 <1.3", "magento": "mage-os/project-community-edition:>=1.2 <1.3",
"php": 8.4, "php": 8.4,
"composer": "2.8.8", "composer": "2.9.5",
"mysql": "mysql:8.4", "mysql": "mysql:8.4",
"opensearch": "opensearchproject/opensearch:2.19.1", "opensearch": "opensearchproject/opensearch:2.19.1",
"rabbitmq": "rabbitmq:4.0-management", "rabbitmq": "rabbitmq:4.0-management",
@@ -86,7 +86,7 @@
"mage-os/project-community-edition:>=2.0 <2.1": { "mage-os/project-community-edition:>=2.0 <2.1": {
"magento": "mage-os/project-community-edition:>=2.0 <2.1", "magento": "mage-os/project-community-edition:>=2.0 <2.1",
"php": 8.4, "php": 8.4,
"composer": "2.8.8", "composer": "2.9.5",
"mysql": "mysql:8.4", "mysql": "mysql:8.4",
"opensearch": "opensearchproject/opensearch:2.19.1", "opensearch": "opensearchproject/opensearch:2.19.1",
"rabbitmq": "rabbitmq:4.0-management", "rabbitmq": "rabbitmq:4.0-management",
@@ -95,6 +95,34 @@
"nginx": "nginx:1.26", "nginx": "nginx:1.26",
"os": "ubuntu-latest", "os": "ubuntu-latest",
"release": "2025-10-16T00:00:00+0000", "release": "2025-10-16T00:00:00+0000",
"eol": "2028-10-17T00:00:00+0000" "eol": "2026-01-20T00:00:00+0000"
},
"mage-os/project-community-edition:>=2.1 <2.2": {
"magento": "mage-os/project-community-edition:>=2.1 <2.2",
"php": 8.4,
"composer": "2.9.5",
"mysql": "mysql:8.4",
"opensearch": "opensearchproject/opensearch:2.19.1",
"rabbitmq": "rabbitmq:4.0-management",
"redis": "redis:7.2",
"varnish": "varnish:7.6",
"nginx": "nginx:1.26",
"os": "ubuntu-latest",
"release": "2026-01-20T00:00:00+0000",
"eol": "2026-03-10T00:00:00+0000"
},
"mage-os/project-community-edition:>=2.2 <2.3": {
"magento": "mage-os/project-community-edition:>=2.2 <2.3",
"php": 8.4,
"composer": "2.9.3",
"mysql": "mysql:8.4",
"opensearch": "opensearchproject/opensearch:3",
"rabbitmq": "rabbitmq:4.1-management",
"valkey": "valkey/valkey:8.0",
"varnish": "varnish:7.7",
"nginx": "nginx:1.28",
"os": "ubuntu-latest",
"release": "2026-03-10T00:00:00+0000",
"eol": "2029-03-10T00:00:00+0000"
} }
} }
@@ -108,7 +108,7 @@
"magento": "mage-os/project-community-edition:1.1.0", "magento": "mage-os/project-community-edition:1.1.0",
"upstream": "2.4.8", "upstream": "2.4.8",
"php": 8.4, "php": 8.4,
"composer": "2.8.8", "composer": "2.9.5",
"mysql": "mysql:8.4", "mysql": "mysql:8.4",
"opensearch": "opensearchproject/opensearch:2.19.1", "opensearch": "opensearchproject/opensearch:2.19.1",
"rabbitmq": "rabbitmq:4.0-management", "rabbitmq": "rabbitmq:4.0-management",
@@ -123,7 +123,7 @@
"magento": "mage-os/project-community-edition:1.1.1", "magento": "mage-os/project-community-edition:1.1.1",
"upstream": "2.4.8", "upstream": "2.4.8",
"php": 8.4, "php": 8.4,
"composer": "2.8.8", "composer": "2.9.5",
"mysql": "mysql:8.4", "mysql": "mysql:8.4",
"opensearch": "opensearchproject/opensearch:2.19.1", "opensearch": "opensearchproject/opensearch:2.19.1",
"rabbitmq": "rabbitmq:4.0-management", "rabbitmq": "rabbitmq:4.0-management",
@@ -138,7 +138,7 @@
"magento": "mage-os/project-community-edition:1.2.0", "magento": "mage-os/project-community-edition:1.2.0",
"upstream": "2.4.8-p1", "upstream": "2.4.8-p1",
"php": 8.4, "php": 8.4,
"composer": "2.8.8", "composer": "2.9.5",
"mysql": "mysql:8.4", "mysql": "mysql:8.4",
"opensearch": "opensearchproject/opensearch:2.19.1", "opensearch": "opensearchproject/opensearch:2.19.1",
"rabbitmq": "rabbitmq:4.0-management", "rabbitmq": "rabbitmq:4.0-management",
@@ -153,7 +153,7 @@
"magento": "mage-os/project-community-edition:1.3.0", "magento": "mage-os/project-community-edition:1.3.0",
"upstream": "2.4.8-p2", "upstream": "2.4.8-p2",
"php": 8.4, "php": 8.4,
"composer": "2.8.8", "composer": "2.9.5",
"mysql": "mysql:8.4", "mysql": "mysql:8.4",
"opensearch": "opensearchproject/opensearch:2.19.1", "opensearch": "opensearchproject/opensearch:2.19.1",
"rabbitmq": "rabbitmq:4.0-management", "rabbitmq": "rabbitmq:4.0-management",
@@ -168,7 +168,7 @@
"magento": "mage-os/project-community-edition:1.3.1", "magento": "mage-os/project-community-edition:1.3.1",
"upstream": "2.4.8-p2", "upstream": "2.4.8-p2",
"php": 8.4, "php": 8.4,
"composer": "2.8.8", "composer": "2.9.5",
"mysql": "mysql:8.4", "mysql": "mysql:8.4",
"opensearch": "opensearchproject/opensearch:2.19.1", "opensearch": "opensearchproject/opensearch:2.19.1",
"rabbitmq": "rabbitmq:4.0-management", "rabbitmq": "rabbitmq:4.0-management",
@@ -183,7 +183,7 @@
"magento": "mage-os/project-community-edition:2.0.0", "magento": "mage-os/project-community-edition:2.0.0",
"upstream": "2.4.8-p3", "upstream": "2.4.8-p3",
"php": 8.4, "php": 8.4,
"composer": "2.8.8", "composer": "2.9.5",
"mysql": "mysql:8.4", "mysql": "mysql:8.4",
"opensearch": "opensearchproject/opensearch:2.19.1", "opensearch": "opensearchproject/opensearch:2.19.1",
"rabbitmq": "rabbitmq:4.0-management", "rabbitmq": "rabbitmq:4.0-management",
@@ -192,6 +192,36 @@
"nginx": "nginx:1.26", "nginx": "nginx:1.26",
"os": "ubuntu-latest", "os": "ubuntu-latest",
"release": "2025-10-16T00:00:00+0000", "release": "2025-10-16T00:00:00+0000",
"eol": "2028-10-17T00:00:00+0000" "eol": "2026-01-20T00:00:00+0000"
},
"mage-os/project-community-edition:2.1.0": {
"magento": "mage-os/project-community-edition:2.1.0",
"upstream": "2.4.8-p3",
"php": 8.4,
"composer": "2.9.5",
"mysql": "mysql:8.4",
"opensearch": "opensearchproject/opensearch:2.19.1",
"rabbitmq": "rabbitmq:4.0-management",
"redis": "redis:7.2",
"varnish": "varnish:7.6",
"nginx": "nginx:1.26",
"os": "ubuntu-latest",
"release": "2026-01-20T00:00:00+0000",
"eol": "2026-03-10T00:00:00+0000"
},
"mage-os/project-community-edition:2.2.0": {
"magento": "mage-os/project-community-edition:2.2.0",
"upstream": "2.4.8-p4",
"php": 8.4,
"composer": "2.9.3",
"mysql": "mysql:8.4",
"opensearch": "opensearchproject/opensearch:3",
"rabbitmq": "rabbitmq:4.1-management",
"valkey": "valkey/valkey:8.0",
"varnish": "varnish:7.7",
"nginx": "nginx:1.28",
"os": "ubuntu-latest",
"release": "2026-03-10T00:00:00+0000",
"eol": "2029-03-10T00:00:00+0000"
} }
} }
@@ -44,7 +44,7 @@
"magento/project-community-edition:>=2.4.2 <2.4.3": { "magento/project-community-edition:>=2.4.2 <2.4.3": {
"magento": "magento/project-community-edition:>=2.4.2 <2.4.3", "magento": "magento/project-community-edition:>=2.4.2 <2.4.3",
"php": 7.4, "php": 7.4,
"composer": 2, "composer": "2.2.21",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:7.9.3", "elasticsearch": "elasticsearch:7.9.3",
"rabbitmq": "rabbitmq:3.8-management", "rabbitmq": "rabbitmq:3.8-management",
@@ -58,7 +58,7 @@
"magento/project-community-edition:>=2.4.3 <2.4.4": { "magento/project-community-edition:>=2.4.3 <2.4.4": {
"magento": "magento/project-community-edition:>=2.4.3 <2.4.4", "magento": "magento/project-community-edition:>=2.4.3 <2.4.4",
"php": 7.4, "php": 7.4,
"composer": 2, "composer": "2.2.21",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:7.16.3", "elasticsearch": "elasticsearch:7.16.3",
"rabbitmq": "rabbitmq:3.8-management", "rabbitmq": "rabbitmq:3.8-management",
@@ -100,27 +100,29 @@
"magento/project-community-edition:>=2.4.6 <2.4.7": { "magento/project-community-edition:>=2.4.6 <2.4.7": {
"magento": "magento/project-community-edition:>=2.4.6 <2.4.7", "magento": "magento/project-community-edition:>=2.4.6 <2.4.7",
"php": 8.2, "php": 8.2,
"composer": "2.2.25", "composer": "2.2.26",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:8.17.4", "elasticsearch": "elasticsearch:8.19.2",
"rabbitmq": "rabbitmq:3.13-management", "rabbitmq": "rabbitmq:4.1-management",
"redis": "redis:7.2", "redis": "redis:7.2",
"varnish": "varnish:7.6", "varnish": "varnish:7.7",
"nginx": "nginx:1.26", "nginx": "nginx:1.28",
"os": "ubuntu-latest", "os": "ubuntu-latest",
"release": "2025-04-08T00:00:00+0000", "release": "2025-04-08T00:00:00+0000",
"eol": "2026-03-14T00:00:00+0000" "eol": "2026-08-11T00:00:00+0000"
}, },
"magento/project-community-edition:>=2.4.7 <2.4.8": { "magento/project-community-edition:>=2.4.7 <2.4.8": {
"magento": "magento/project-community-edition:>=2.4.7 <2.4.8", "magento": "magento/project-community-edition:>=2.4.7 <2.4.8",
"php": 8.3, "php": 8.3,
"composer": "2.8.8", "composer": "2.9.5",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:8.17.4", "elasticsearch": "elasticsearch:8.17.4",
"rabbitmq": "rabbitmq:3.13-management", "opensearch": "opensearchproject/opensearch:2.19.5",
"rabbitmq": "rabbitmq:4.1-management",
"redis": "redis:7.2", "redis": "redis:7.2",
"varnish": "varnish:7.6", "valkey": "valkey/valkey:8.0",
"nginx": "nginx:1.26", "varnish": "varnish:7.7",
"nginx": "nginx:1.28",
"os": "ubuntu-latest", "os": "ubuntu-latest",
"release": "2025-04-08T00:00:00+0000", "release": "2025-04-08T00:00:00+0000",
"eol": "2027-04-09T00:00:00+0000" "eol": "2027-04-09T00:00:00+0000"
@@ -128,47 +130,41 @@
"magento/project-community-edition:>=2.4.8 <2.4.9": { "magento/project-community-edition:>=2.4.8 <2.4.9": {
"magento": "magento/project-community-edition:>=2.4.8 <2.4.9", "magento": "magento/project-community-edition:>=2.4.8 <2.4.9",
"php": 8.4, "php": 8.4,
"composer": "2.8.8", "composer": "2.9.5",
"mysql": "mysql:8.4", "mysql": "mysql:8.4",
"elasticsearch": "elasticsearch:8.17.4", "opensearch": "opensearchproject/opensearch:3",
"opensearch": "opensearchproject/opensearch:2.19.1", "rabbitmq": "rabbitmq:4.1-management",
"rabbitmq": "rabbitmq:4.0-management",
"redis": "redis:7.2",
"valkey": "valkey/valkey:8.0", "valkey": "valkey/valkey:8.0",
"varnish": "varnish:7.6", "varnish": "varnish:7.7",
"nginx": "nginx:1.26", "nginx": "nginx:1.28",
"os": "ubuntu-latest", "os": "ubuntu-latest",
"release": "2025-04-08T00:00:00+0000", "release": "2025-04-08T00:00:00+0000",
"eol": "2028-04-09T00:00:00+0000" "eol": "2028-04-09T00:00:00+0000"
}, },
"magento/project-community-edition": { "magento/project-community-edition": {
"magento": "magento/project-community-edition:>=2.4.8 <2.4.9", "magento": "magento/project-community-edition",
"php": 8.4, "php": 8.4,
"composer": "2.8.8", "composer": "2.9.5",
"mysql": "mysql:8.4", "mysql": "mysql:8.4",
"elasticsearch": "elasticsearch:8.17.4", "opensearch": "opensearchproject/opensearch:3",
"opensearch": "opensearchproject/opensearch:2.19.1", "rabbitmq": "rabbitmq:4.1-management",
"rabbitmq": "rabbitmq:4.0-management",
"redis": "redis:7.2",
"valkey": "valkey/valkey:8.0", "valkey": "valkey/valkey:8.0",
"varnish": "varnish:7.6", "varnish": "varnish:7.7",
"nginx": "nginx:1.26", "nginx": "nginx:1.28",
"os": "ubuntu-latest", "os": "ubuntu-latest",
"release": "2025-04-08T00:00:00+0000", "release": "2025-04-08T00:00:00+0000",
"eol": "2028-04-09T00:00:00+0000" "eol": "2028-04-09T00:00:00+0000"
}, },
"magento/project-community-edition:next": { "magento/project-community-edition:next": {
"magento": "magento/project-community-edition:>=2.4.8 <2.4.9", "magento": "magento/project-community-edition:@alpha",
"php": 8.4, "php": 8.4,
"composer": "2.8.8", "composer": "2.9.5",
"mysql": "mysql:8.4", "mysql": "mysql:8.4",
"elasticsearch": "elasticsearch:8.17.4",
"valkey": "valkey/valkey:8.0", "valkey": "valkey/valkey:8.0",
"opensearch": "opensearchproject/opensearch:2.19.1", "opensearch": "opensearchproject/opensearch:3",
"rabbitmq": "rabbitmq:4.0-management", "rabbitmq": "rabbitmq:4.1-management",
"redis": "redis:7.2", "varnish": "varnish:7.7",
"varnish": "varnish:7.6", "nginx": "nginx:1.28",
"nginx": "nginx:1.26",
"os": "ubuntu-latest", "os": "ubuntu-latest",
"release": "2025-04-08T00:00:00+0000", "release": "2025-04-08T00:00:00+0000",
"eol": "2028-04-09T00:00:00+0000" "eol": "2028-04-09T00:00:00+0000"
@@ -86,7 +86,7 @@
"magento/project-community-edition:2.4.2": { "magento/project-community-edition:2.4.2": {
"magento": "magento/project-community-edition:2.4.2", "magento": "magento/project-community-edition:2.4.2",
"php": 7.4, "php": 7.4,
"composer": 2, "composer": "2.2.21",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:7.9.3", "elasticsearch": "elasticsearch:7.9.3",
"rabbitmq": "rabbitmq:3.8-management", "rabbitmq": "rabbitmq:3.8-management",
@@ -100,7 +100,7 @@
"magento/project-community-edition:2.4.2-p1": { "magento/project-community-edition:2.4.2-p1": {
"magento": "magento/project-community-edition:2.4.2-p1", "magento": "magento/project-community-edition:2.4.2-p1",
"php": 7.4, "php": 7.4,
"composer": 2, "composer": "2.2.21",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:7.9.3", "elasticsearch": "elasticsearch:7.9.3",
"rabbitmq": "rabbitmq:3.8-management", "rabbitmq": "rabbitmq:3.8-management",
@@ -114,7 +114,7 @@
"magento/project-community-edition:2.4.2-p2": { "magento/project-community-edition:2.4.2-p2": {
"magento": "magento/project-community-edition:2.4.2-p2", "magento": "magento/project-community-edition:2.4.2-p2",
"php": 7.4, "php": 7.4,
"composer": 2, "composer": "2.2.21",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:7.9.3", "elasticsearch": "elasticsearch:7.9.3",
"rabbitmq": "rabbitmq:3.8-management", "rabbitmq": "rabbitmq:3.8-management",
@@ -128,7 +128,7 @@
"magento/project-community-edition:2.4.3": { "magento/project-community-edition:2.4.3": {
"magento": "magento/project-community-edition:2.4.3", "magento": "magento/project-community-edition:2.4.3",
"php": 7.4, "php": 7.4,
"composer": 2, "composer": "2.2.21",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:7.16.3", "elasticsearch": "elasticsearch:7.16.3",
"rabbitmq": "rabbitmq:3.8-management", "rabbitmq": "rabbitmq:3.8-management",
@@ -142,7 +142,7 @@
"magento/project-community-edition:2.4.3-p1": { "magento/project-community-edition:2.4.3-p1": {
"magento": "magento/project-community-edition:2.4.3-p1", "magento": "magento/project-community-edition:2.4.3-p1",
"php": 7.4, "php": 7.4,
"composer": 2, "composer": "2.2.21",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:7.16.3", "elasticsearch": "elasticsearch:7.16.3",
"rabbitmq": "rabbitmq:3.8-management", "rabbitmq": "rabbitmq:3.8-management",
@@ -156,7 +156,7 @@
"magento/project-community-edition:2.4.3-p2": { "magento/project-community-edition:2.4.3-p2": {
"magento": "magento/project-community-edition:2.4.3-p2", "magento": "magento/project-community-edition:2.4.3-p2",
"php": 7.4, "php": 7.4,
"composer": 2, "composer": "2.2.21",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:7.16.3", "elasticsearch": "elasticsearch:7.16.3",
"rabbitmq": "rabbitmq:3.8-management", "rabbitmq": "rabbitmq:3.8-management",
@@ -170,7 +170,7 @@
"magento/project-community-edition:2.4.3-p3": { "magento/project-community-edition:2.4.3-p3": {
"magento": "magento/project-community-edition:2.4.3-p3", "magento": "magento/project-community-edition:2.4.3-p3",
"php": 7.4, "php": 7.4,
"composer": 2, "composer": "2.2.21",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:7.16.3", "elasticsearch": "elasticsearch:7.16.3",
"rabbitmq": "rabbitmq:3.8-management", "rabbitmq": "rabbitmq:3.8-management",
@@ -184,7 +184,7 @@
"magento/project-community-edition:2.4.4": { "magento/project-community-edition:2.4.4": {
"magento": "magento/project-community-edition:2.4.4", "magento": "magento/project-community-edition:2.4.4",
"php": 8.1, "php": 8.1,
"composer": 2, "composer": "2.2.21",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:7.16.3", "elasticsearch": "elasticsearch:7.16.3",
"rabbitmq": "rabbitmq:3.9-management", "rabbitmq": "rabbitmq:3.9-management",
@@ -198,7 +198,7 @@
"magento/project-community-edition:2.4.4-p1": { "magento/project-community-edition:2.4.4-p1": {
"magento": "magento/project-community-edition:2.4.4-p1", "magento": "magento/project-community-edition:2.4.4-p1",
"php": 8.1, "php": 8.1,
"composer": 2, "composer": "2.2.21",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:7.16.3", "elasticsearch": "elasticsearch:7.16.3",
"rabbitmq": "rabbitmq:3.9-management", "rabbitmq": "rabbitmq:3.9-management",
@@ -212,7 +212,7 @@
"magento/project-community-edition:2.4.4-p2": { "magento/project-community-edition:2.4.4-p2": {
"magento": "magento/project-community-edition:2.4.4-p2", "magento": "magento/project-community-edition:2.4.4-p2",
"php": 8.1, "php": 8.1,
"composer": 2, "composer": "2.2.21",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:7.16.3", "elasticsearch": "elasticsearch:7.16.3",
"rabbitmq": "rabbitmq:3.9-management", "rabbitmq": "rabbitmq:3.9-management",
@@ -380,7 +380,7 @@
"magento/project-community-edition:2.4.5": { "magento/project-community-edition:2.4.5": {
"magento": "magento/project-community-edition:2.4.5", "magento": "magento/project-community-edition:2.4.5",
"php": 8.1, "php": 8.1,
"composer": 2, "composer": "2.2.21",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:7.17.5", "elasticsearch": "elasticsearch:7.17.5",
"rabbitmq": "rabbitmq:3.9-management", "rabbitmq": "rabbitmq:3.9-management",
@@ -394,7 +394,7 @@
"magento/project-community-edition:2.4.5-p1": { "magento/project-community-edition:2.4.5-p1": {
"magento": "magento/project-community-edition:2.4.5-p1", "magento": "magento/project-community-edition:2.4.5-p1",
"php": 8.1, "php": 8.1,
"composer": 2, "composer": "2.2.21",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:7.17.5", "elasticsearch": "elasticsearch:7.17.5",
"rabbitmq": "rabbitmq:3.9-management", "rabbitmq": "rabbitmq:3.9-management",
@@ -590,7 +590,7 @@
"magento/project-community-edition:2.4.6": { "magento/project-community-edition:2.4.6": {
"magento": "magento/project-community-edition:2.4.6", "magento": "magento/project-community-edition:2.4.6",
"php": 8.1, "php": 8.1,
"composer": "2.2.21", "composer": "2.2.26",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:7.17.5", "elasticsearch": "elasticsearch:7.17.5",
"rabbitmq": "rabbitmq:3.9-management", "rabbitmq": "rabbitmq:3.9-management",
@@ -604,7 +604,7 @@
"magento/project-community-edition:2.4.6-p1": { "magento/project-community-edition:2.4.6-p1": {
"magento": "magento/project-community-edition:2.4.6-p1", "magento": "magento/project-community-edition:2.4.6-p1",
"php": 8.1, "php": 8.1,
"composer": "2.2.21", "composer": "2.2.26",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:8.5.3", "elasticsearch": "elasticsearch:8.5.3",
"rabbitmq": "rabbitmq:3.9-management", "rabbitmq": "rabbitmq:3.9-management",
@@ -618,7 +618,7 @@
"magento/project-community-edition:2.4.6-p2": { "magento/project-community-edition:2.4.6-p2": {
"magento": "magento/project-community-edition:2.4.6-p2", "magento": "magento/project-community-edition:2.4.6-p2",
"php": 8.1, "php": 8.1,
"composer": "2.2.21", "composer": "2.2.26",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:8.5.3", "elasticsearch": "elasticsearch:8.5.3",
"rabbitmq": "rabbitmq:3.9-management", "rabbitmq": "rabbitmq:3.9-management",
@@ -632,13 +632,13 @@
"magento/project-community-edition:2.4.6-p3": { "magento/project-community-edition:2.4.6-p3": {
"magento": "magento/project-community-edition:2.4.6-p3", "magento": "magento/project-community-edition:2.4.6-p3",
"php": 8.1, "php": 8.1,
"composer": "2.2.21", "composer": "2.2.26",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:8.5.3", "elasticsearch": "elasticsearch:8.5.3",
"rabbitmq": "rabbitmq:3.9-management", "rabbitmq": "rabbitmq:3.9-management",
"redis": "redis:7.0", "redis": "redis:7.0",
"varnish": "varnish:7.3", "varnish": "varnish:7.3",
"nginx": "nginx:1.22", "nginx": "nginx:1.26",
"os": "ubuntu-latest", "os": "ubuntu-latest",
"release": "2023-10-10T00:00:00+0000", "release": "2023-10-10T00:00:00+0000",
"eol": "2024-02-12T00:00:00+0000" "eol": "2024-02-12T00:00:00+0000"
@@ -646,13 +646,13 @@
"magento/project-community-edition:2.4.6-p4": { "magento/project-community-edition:2.4.6-p4": {
"magento": "magento/project-community-edition:2.4.6-p4", "magento": "magento/project-community-edition:2.4.6-p4",
"php": 8.1, "php": 8.1,
"composer": "2.2.21", "composer": "2.2.26",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:8.5.3", "elasticsearch": "elasticsearch:8.5.3",
"rabbitmq": "rabbitmq:3.9-management", "rabbitmq": "rabbitmq:3.9-management",
"redis": "redis:7.0", "redis": "redis:7.0",
"varnish": "varnish:7.3", "varnish": "varnish:7.3",
"nginx": "nginx:1.22", "nginx": "nginx:1.26",
"os": "ubuntu-latest", "os": "ubuntu-latest",
"release": "2024-02-12T00:00:00+0000", "release": "2024-02-12T00:00:00+0000",
"eol": "2024-04-09T00:00:00+0000" "eol": "2024-04-09T00:00:00+0000"
@@ -660,13 +660,13 @@
"magento/project-community-edition:2.4.6-p5": { "magento/project-community-edition:2.4.6-p5": {
"magento": "magento/project-community-edition:2.4.6-p5", "magento": "magento/project-community-edition:2.4.6-p5",
"php": 8.1, "php": 8.1,
"composer": "2.2.21", "composer": "2.2.26",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:8.5.3", "elasticsearch": "elasticsearch:8.5.3",
"rabbitmq": "rabbitmq:3.9-management", "rabbitmq": "rabbitmq:3.9-management",
"redis": "redis:7.0", "redis": "redis:7.0",
"varnish": "varnish:7.3", "varnish": "varnish:7.3",
"nginx": "nginx:1.22", "nginx": "nginx:1.26",
"os": "ubuntu-latest", "os": "ubuntu-latest",
"release": "2024-04-09T00:00:00+0000", "release": "2024-04-09T00:00:00+0000",
"eol": "2024-06-11T00:00:00+0000" "eol": "2024-06-11T00:00:00+0000"
@@ -674,13 +674,13 @@
"magento/project-community-edition:2.4.6-p6": { "magento/project-community-edition:2.4.6-p6": {
"magento": "magento/project-community-edition:2.4.6-p6", "magento": "magento/project-community-edition:2.4.6-p6",
"php": 8.1, "php": 8.1,
"composer": "2.2.21", "composer": "2.2.26",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:8.5.3", "elasticsearch": "elasticsearch:8.5.3",
"rabbitmq": "rabbitmq:3.9-management", "rabbitmq": "rabbitmq:3.9-management",
"redis": "redis:7.0", "redis": "redis:7.0",
"varnish": "varnish:7.3", "varnish": "varnish:7.3",
"nginx": "nginx:1.22", "nginx": "nginx:1.26",
"os": "ubuntu-latest", "os": "ubuntu-latest",
"release": "2024-06-11T00:00:00+0000", "release": "2024-06-11T00:00:00+0000",
"eol": "2024-08-13T00:00:00+0000" "eol": "2024-08-13T00:00:00+0000"
@@ -688,13 +688,13 @@
"magento/project-community-edition:2.4.6-p7": { "magento/project-community-edition:2.4.6-p7": {
"magento": "magento/project-community-edition:2.4.6-p7", "magento": "magento/project-community-edition:2.4.6-p7",
"php": 8.1, "php": 8.1,
"composer": "2.2.21", "composer": "2.2.26",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:8.5.3", "elasticsearch": "elasticsearch:8.5.3",
"rabbitmq": "rabbitmq:3.9-management", "rabbitmq": "rabbitmq:3.9-management",
"redis": "redis:7.0", "redis": "redis:7.0",
"varnish": "varnish:7.3", "varnish": "varnish:7.3",
"nginx": "nginx:1.22", "nginx": "nginx:1.26",
"os": "ubuntu-latest", "os": "ubuntu-latest",
"release": "2024-08-13T00:00:00+0000", "release": "2024-08-13T00:00:00+0000",
"eol": "2024-10-08T00:00:00+0000" "eol": "2024-10-08T00:00:00+0000"
@@ -702,13 +702,13 @@
"magento/project-community-edition:2.4.6-p8": { "magento/project-community-edition:2.4.6-p8": {
"magento": "magento/project-community-edition:2.4.6-p8", "magento": "magento/project-community-edition:2.4.6-p8",
"php": 8.1, "php": 8.1,
"composer": "2.2.21", "composer": "2.2.26",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:8.5.3", "elasticsearch": "elasticsearch:8.5.3",
"rabbitmq": "rabbitmq:3.9-management", "rabbitmq": "rabbitmq:3.9-management",
"redis": "redis:7.0", "redis": "redis:7.0",
"varnish": "varnish:7.3", "varnish": "varnish:7.3",
"nginx": "nginx:1.22", "nginx": "nginx:1.26",
"os": "ubuntu-latest", "os": "ubuntu-latest",
"release": "2024-10-08T00:00:00+0000", "release": "2024-10-08T00:00:00+0000",
"eol": "2025-02-11T00:00:00+0000" "eol": "2025-02-11T00:00:00+0000"
@@ -716,13 +716,13 @@
"magento/project-community-edition:2.4.6-p9": { "magento/project-community-edition:2.4.6-p9": {
"magento": "magento/project-community-edition:2.4.6-p9", "magento": "magento/project-community-edition:2.4.6-p9",
"php": 8.1, "php": 8.1,
"composer": "2.2.21", "composer": "2.2.26",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:8.5.3", "elasticsearch": "elasticsearch:8.5.3",
"rabbitmq": "rabbitmq:3.9-management", "rabbitmq": "rabbitmq:3.9-management",
"redis": "redis:7.0", "redis": "redis:7.0",
"varnish": "varnish:7.3", "varnish": "varnish:7.3",
"nginx": "nginx:1.22", "nginx": "nginx:1.26",
"os": "ubuntu-latest", "os": "ubuntu-latest",
"release": "2025-02-11T00:00:00+0000", "release": "2025-02-11T00:00:00+0000",
"eol": "2025-04-08T00:00:00+0000" "eol": "2025-04-08T00:00:00+0000"
@@ -730,7 +730,7 @@
"magento/project-community-edition:2.4.6-p10": { "magento/project-community-edition:2.4.6-p10": {
"magento": "magento/project-community-edition:2.4.6-p10", "magento": "magento/project-community-edition:2.4.6-p10",
"php": 8.2, "php": 8.2,
"composer": "2.2.25", "composer": "2.2.26",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:8.17.4", "elasticsearch": "elasticsearch:8.17.4",
"rabbitmq": "rabbitmq:3.13-management", "rabbitmq": "rabbitmq:3.13-management",
@@ -744,13 +744,13 @@
"magento/project-community-edition:2.4.6-p11": { "magento/project-community-edition:2.4.6-p11": {
"magento": "magento/project-community-edition:2.4.6-p11", "magento": "magento/project-community-edition:2.4.6-p11",
"php": 8.1, "php": 8.1,
"composer": "2.2.21", "composer": "2.2.26",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:8.5.3", "elasticsearch": "elasticsearch:8.5.3",
"rabbitmq": "rabbitmq:3.13-management", "rabbitmq": "rabbitmq:3.13-management",
"redis": "redis:7.2", "redis": "redis:7.2",
"varnish": "varnish:7.3", "varnish": "varnish:7.3",
"nginx": "nginx:1.22", "nginx": "nginx:1.26",
"os": "ubuntu-latest", "os": "ubuntu-latest",
"release": "2025-06-10T00:00:00+0000", "release": "2025-06-10T00:00:00+0000",
"eol": "2025-08-12T00:00:00+0000" "eol": "2025-08-12T00:00:00+0000"
@@ -758,13 +758,13 @@
"magento/project-community-edition:2.4.6-p12": { "magento/project-community-edition:2.4.6-p12": {
"magento": "magento/project-community-edition:2.4.6-p12", "magento": "magento/project-community-edition:2.4.6-p12",
"php": 8.1, "php": 8.1,
"composer": "2.2.21", "composer": "2.2.26",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:8.5.3", "elasticsearch": "elasticsearch:8.5.3",
"rabbitmq": "rabbitmq:3.13-management", "rabbitmq": "rabbitmq:3.13-management",
"redis": "redis:7.2", "redis": "redis:7.2",
"varnish": "varnish:7.3", "varnish": "varnish:7.3",
"nginx": "nginx:1.22", "nginx": "nginx:1.28",
"os": "ubuntu-latest", "os": "ubuntu-latest",
"release": "2025-08-12T00:00:00+0000", "release": "2025-08-12T00:00:00+0000",
"eol": "2025-10-14T00:00:00+0000" "eol": "2025-10-14T00:00:00+0000"
@@ -772,21 +772,37 @@
"magento/project-community-edition:2.4.6-p13": { "magento/project-community-edition:2.4.6-p13": {
"magento": "magento/project-community-edition:2.4.6-p13", "magento": "magento/project-community-edition:2.4.6-p13",
"php": 8.1, "php": 8.1,
"composer": "2.2.21", "composer": "2.2.26",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:8.5.3", "elasticsearch": "elasticsearch:8.5.3",
"rabbitmq": "rabbitmq:3.13-management", "rabbitmq": "rabbitmq:3.13-management",
"redis": "redis:7.2", "redis": "redis:7.2",
"varnish": "varnish:7.3", "varnish": "varnish:7.3",
"nginx": "nginx:1.22", "nginx": "nginx:1.28",
"os": "ubuntu-latest", "os": "ubuntu-latest",
"release": "2025-10-14T00:00:00+0000", "release": "2025-10-14T00:00:00+0000",
"eol": "2026-03-14T00:00:00+0000" "eol": "2026-03-09T00:00:00+0000"
},
"magento/project-community-edition:2.4.6-p14": {
"magento": "magento/project-community-edition:2.4.6-p14",
"php": 8.2,
"composer": "2.2.26",
"mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:8.19.2",
"opensearch": "opensearchproject/opensearch:2.19.5",
"rabbitmq": "rabbitmq:4.1-management",
"redis": "redis:7.2",
"valkey": "valkey/valkey:8.0",
"varnish": "varnish:7.7",
"nginx": "nginx:1.28",
"os": "ubuntu-latest",
"release": "2026-03-10T00:00:00+0000",
"eol": "2026-08-11T00:00:00+0000"
}, },
"magento/project-community-edition:2.4.7": { "magento/project-community-edition:2.4.7": {
"magento": "magento/project-community-edition:2.4.7", "magento": "magento/project-community-edition:2.4.7",
"php": 8.3, "php": 8.3,
"composer": "2.7.4", "composer": "2.9.5",
"mysql": "mariadb:10.6", "mysql": "mariadb:10.6",
"elasticsearch": "elasticsearch:8.11.4", "elasticsearch": "elasticsearch:8.11.4",
"rabbitmq": "rabbitmq:3.13-management", "rabbitmq": "rabbitmq:3.13-management",
@@ -800,7 +816,7 @@
"magento/project-community-edition:2.4.7-p1": { "magento/project-community-edition:2.4.7-p1": {
"magento": "magento/project-community-edition:2.4.7-p1", "magento": "magento/project-community-edition:2.4.7-p1",
"php": 8.3, "php": 8.3,
"composer": "2.7.4", "composer": "2.9.5",
"mysql": "mariadb:10.6", "mysql": "mariadb:10.6",
"elasticsearch": "elasticsearch:8.11.4", "elasticsearch": "elasticsearch:8.11.4",
"rabbitmq": "rabbitmq:3.13-management", "rabbitmq": "rabbitmq:3.13-management",
@@ -814,7 +830,7 @@
"magento/project-community-edition:2.4.7-p2": { "magento/project-community-edition:2.4.7-p2": {
"magento": "magento/project-community-edition:2.4.7-p2", "magento": "magento/project-community-edition:2.4.7-p2",
"php": 8.3, "php": 8.3,
"composer": "2.7.4", "composer": "2.9.5",
"mysql": "mariadb:10.6", "mysql": "mariadb:10.6",
"elasticsearch": "elasticsearch:8.11.4", "elasticsearch": "elasticsearch:8.11.4",
"rabbitmq": "rabbitmq:3.13-management", "rabbitmq": "rabbitmq:3.13-management",
@@ -828,7 +844,7 @@
"magento/project-community-edition:2.4.7-p3": { "magento/project-community-edition:2.4.7-p3": {
"magento": "magento/project-community-edition:2.4.7-p3", "magento": "magento/project-community-edition:2.4.7-p3",
"php": 8.3, "php": 8.3,
"composer": "2.7.4", "composer": "2.9.5",
"mysql": "mariadb:10.6", "mysql": "mariadb:10.6",
"elasticsearch": "elasticsearch:8.11.4", "elasticsearch": "elasticsearch:8.11.4",
"rabbitmq": "rabbitmq:3.13-management", "rabbitmq": "rabbitmq:3.13-management",
@@ -842,7 +858,7 @@
"magento/project-community-edition:2.4.7-p4": { "magento/project-community-edition:2.4.7-p4": {
"magento": "magento/project-community-edition:2.4.7-p4", "magento": "magento/project-community-edition:2.4.7-p4",
"php": 8.3, "php": 8.3,
"composer": "2.7.4", "composer": "2.9.5",
"mysql": "mariadb:10.6", "mysql": "mariadb:10.6",
"elasticsearch": "elasticsearch:8.11.4", "elasticsearch": "elasticsearch:8.11.4",
"rabbitmq": "rabbitmq:3.13-management", "rabbitmq": "rabbitmq:3.13-management",
@@ -856,7 +872,7 @@
"magento/project-community-edition:2.4.7-p5": { "magento/project-community-edition:2.4.7-p5": {
"magento": "magento/project-community-edition:2.4.7-p5", "magento": "magento/project-community-edition:2.4.7-p5",
"php": 8.3, "php": 8.3,
"composer": "2.8.8", "composer": "2.9.5",
"mysql": "mysql:8.0", "mysql": "mysql:8.0",
"elasticsearch": "elasticsearch:8.17.4", "elasticsearch": "elasticsearch:8.17.4",
"rabbitmq": "rabbitmq:3.13-management", "rabbitmq": "rabbitmq:3.13-management",
@@ -870,9 +886,9 @@
"magento/project-community-edition:2.4.7-p6": { "magento/project-community-edition:2.4.7-p6": {
"magento": "magento/project-community-edition:2.4.7-p6", "magento": "magento/project-community-edition:2.4.7-p6",
"php": 8.3, "php": 8.3,
"composer": "2.7.4", "composer": "2.9.5",
"mysql": "mariadb:10.6", "mysql": "mariadb:10.6",
"elasticsearch": "elasticsearch:8.11.4", "elasticsearch": "elasticsearch:8.17.4",
"rabbitmq": "rabbitmq:3.13-management", "rabbitmq": "rabbitmq:3.13-management",
"redis": "redis:7.2", "redis": "redis:7.2",
"varnish": "varnish:7.5", "varnish": "varnish:7.5",
@@ -884,13 +900,13 @@
"magento/project-community-edition:2.4.7-p7": { "magento/project-community-edition:2.4.7-p7": {
"magento": "magento/project-community-edition:2.4.7-p7", "magento": "magento/project-community-edition:2.4.7-p7",
"php": 8.3, "php": 8.3,
"composer": "2.7.4", "composer": "2.9.5",
"mysql": "mariadb:10.6", "mysql": "mariadb:10.6",
"elasticsearch": "elasticsearch:8.11.4", "elasticsearch": "elasticsearch:8.17.4",
"rabbitmq": "rabbitmq:3.13-management", "rabbitmq": "rabbitmq:3.13-management",
"redis": "redis:7.2", "redis": "redis:7.2",
"varnish": "varnish:7.5", "varnish": "varnish:7.5",
"nginx": "nginx:1.26", "nginx": "nginx:1.28",
"os": "ubuntu-latest", "os": "ubuntu-latest",
"release": "2025-08-12T00:00:00+0000", "release": "2025-08-12T00:00:00+0000",
"eol": "2025-10-14T00:00:00+0000" "eol": "2025-10-14T00:00:00+0000"
@@ -898,24 +914,40 @@
"magento/project-community-edition:2.4.7-p8": { "magento/project-community-edition:2.4.7-p8": {
"magento": "magento/project-community-edition:2.4.7-p8", "magento": "magento/project-community-edition:2.4.7-p8",
"php": 8.3, "php": 8.3,
"composer": "2.7.4", "composer": "2.9.5",
"mysql": "mariadb:10.6", "mysql": "mariadb:10.6",
"elasticsearch": "elasticsearch:8.11.4", "elasticsearch": "elasticsearch:8.17.4",
"rabbitmq": "rabbitmq:3.13-management", "rabbitmq": "rabbitmq:3.13-management",
"redis": "redis:7.2", "redis": "redis:7.2",
"varnish": "varnish:7.5", "varnish": "varnish:7.5",
"nginx": "nginx:1.26", "nginx": "nginx:1.28",
"os": "ubuntu-latest", "os": "ubuntu-latest",
"release": "2025-10-14T00:00:00+0000", "release": "2025-10-14T00:00:00+0000",
"eol": "2026-03-09T00:00:00+0000"
},
"magento/project-community-edition:2.4.7-p9": {
"magento": "magento/project-community-edition:2.4.7-p9",
"php": 8.3,
"composer": "2.9.5",
"mysql": "mariadb:10.11",
"elasticsearch": "elasticsearch:8.17.4",
"opensearch": "opensearchproject/opensearch:2.19.5",
"rabbitmq": "rabbitmq:4.1-management",
"redis": "redis:7.2",
"valkey": "valkey/valkey:8.0",
"varnish": "varnish:7.7",
"nginx": "nginx:1.28",
"os": "ubuntu-latest",
"release": "2026-03-10T00:00:00+0000",
"eol": "2027-04-09T00:00:00+0000" "eol": "2027-04-09T00:00:00+0000"
}, },
"magento/project-community-edition:2.4.8": { "magento/project-community-edition:2.4.8": {
"magento": "magento/project-community-edition:2.4.8", "magento": "magento/project-community-edition:2.4.8",
"php": 8.4, "php": 8.4,
"composer": "2.8.8", "composer": "2.9.5",
"mysql": "mysql:8.4", "mysql": "mysql:8.4",
"elasticsearch": "elasticsearch:8.17.4", "elasticsearch": "elasticsearch:8.17.4",
"opensearch": "opensearchproject/opensearch:2.19.1", "opensearch": "opensearchproject/opensearch:2.19.5",
"rabbitmq": "rabbitmq:4.0-management", "rabbitmq": "rabbitmq:4.0-management",
"redis": "redis:7.2", "redis": "redis:7.2",
"valkey": "valkey/valkey:8.0", "valkey": "valkey/valkey:8.0",
@@ -928,9 +960,9 @@
"magento/project-community-edition:2.4.8-p1": { "magento/project-community-edition:2.4.8-p1": {
"magento": "magento/project-community-edition:2.4.8-p1", "magento": "magento/project-community-edition:2.4.8-p1",
"php": 8.4, "php": 8.4,
"composer": "2.8.8", "composer": "2.9.5",
"mysql": "mysql:8.4", "mysql": "mysql:8.4",
"opensearch": "opensearchproject/opensearch:2.19.1", "opensearch": "opensearchproject/opensearch:2.19.5",
"rabbitmq": "rabbitmq:4.0-management", "rabbitmq": "rabbitmq:4.0-management",
"redis": "redis:7.2", "redis": "redis:7.2",
"varnish": "varnish:7.6", "varnish": "varnish:7.6",
@@ -942,13 +974,13 @@
"magento/project-community-edition:2.4.8-p2": { "magento/project-community-edition:2.4.8-p2": {
"magento": "magento/project-community-edition:2.4.8-p2", "magento": "magento/project-community-edition:2.4.8-p2",
"php": 8.4, "php": 8.4,
"composer": "2.8.8", "composer": "2.9.5",
"mysql": "mysql:8.4", "mysql": "mysql:8.4",
"opensearch": "opensearchproject/opensearch:2.19.1", "opensearch": "opensearchproject/opensearch:3",
"rabbitmq": "rabbitmq:4.0-management", "rabbitmq": "rabbitmq:4.0-management",
"redis": "redis:7.2", "redis": "redis:7.2",
"varnish": "varnish:7.6", "varnish": "varnish:7.6",
"nginx": "nginx:1.26", "nginx": "nginx:1.28",
"os": "ubuntu-latest", "os": "ubuntu-latest",
"release": "2025-08-12T00:00:00+0000", "release": "2025-08-12T00:00:00+0000",
"eol": "2025-10-14T00:00:00+0000" "eol": "2025-10-14T00:00:00+0000"
@@ -956,15 +988,29 @@
"magento/project-community-edition:2.4.8-p3": { "magento/project-community-edition:2.4.8-p3": {
"magento": "magento/project-community-edition:2.4.8-p3", "magento": "magento/project-community-edition:2.4.8-p3",
"php": 8.4, "php": 8.4,
"composer": "2.8.8", "composer": "2.9.5",
"mysql": "mysql:8.4", "mysql": "mysql:8.4",
"opensearch": "opensearchproject/opensearch:2.19.1", "opensearch": "opensearchproject/opensearch:3",
"rabbitmq": "rabbitmq:4.0-management", "rabbitmq": "rabbitmq:4.0-management",
"redis": "redis:7.2", "redis": "redis:7.2",
"varnish": "varnish:7.6", "varnish": "varnish:7.6",
"nginx": "nginx:1.26", "nginx": "nginx:1.28",
"os": "ubuntu-latest", "os": "ubuntu-latest",
"release": "2025-10-14T00:00:00+0000", "release": "2025-10-14T00:00:00+0000",
"eol": "2026-03-09T00:00:00+0000"
},
"magento/project-community-edition:2.4.8-p4": {
"magento": "magento/project-community-edition:2.4.8-p4",
"php": 8.4,
"composer": "2.9.5",
"mysql": "mysql:8.4",
"opensearch": "opensearchproject/opensearch:3",
"rabbitmq": "rabbitmq:4.1-management",
"valkey": "valkey/valkey:8.0",
"varnish": "varnish:7.7",
"nginx": "nginx:1.28",
"os": "ubuntu-latest",
"release": "2026-03-10T00:00:00+0000",
"eol": "2028-04-09T00:00:00+0000" "eol": "2028-04-09T00:00:00+0000"
} }
} }
-36
View File
@@ -1,36 +0,0 @@
# Magento 2 Unit Test Action
A Github Action that runs the Unit Tests of a Magento Package
## Inputs
See the [action.yml](./action.yml)
## Usage
```yml
name: Unit Test
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
unit-test:
strategy:
matrix:
php_version:
- 7.4
- 8.1
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: graycoreio/github-actions-magento2/unit-test@main
with:
php_version: ${{ matrix.php_version }}
composer_auth: ${{ secrets.COMPOSER_AUTH }}
```
-63
View File
@@ -1,63 +0,0 @@
name: "Unit Test"
author: "Graycore"
description: "A Github Action that runs the Unit Tests of a Magento Package"
inputs:
php_version:
required: true
default: "8.4"
description: "PHP Version to use"
source_folder:
required: true
default: .
description: "The source folder of the package"
test_command:
required: true
default: composer run test
description: "The test command"
composer_auth:
required: false
description: "Composer Authentication Credentials"
runs:
using: "composite"
steps:
- name: Set PHP Version
uses: shivammathur/setup-php@v2
with:
php-version: ${{ inputs.php_version }}
- name: Get Composer Cache Directory
shell: bash
working-directory: ${{ inputs.source_folder }}
id: composer-cache
run: |
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: "Cache Composer Packages"
uses: actions/cache@v5
with:
key: "composer | v4 | ${{ hashFiles('composer.lock') }} | ${{ runner.os }} | ${{ inputs.php_version }}"
path: ${{ steps.composer-cache.outputs.dir }}
- run: composer install
name: Require and attempt install
working-directory: ${{ inputs.source_folder }}
shell: bash
env:
COMPOSER_CACHE_DIR: ${{ steps.composer-cache.outputs.dir }}
COMPOSER_AUTH: ${{ inputs.composer_auth }}
- run: ${{ inputs.test_command }}
name: Run Unit Tests
working-directory: ${{ inputs.source_folder }}
shell: bash
env:
COMPOSER_CACHE_DIR: ${{ steps.composer-cache.outputs.dir }}
COMPOSER_AUTH: ${{ inputs.composer_auth }}
branding:
icon: "code"
color: "green"