mirror of
https://github.com/graycoreio/github-actions-magento2.git
synced 2026-06-13 13:14:53 +00:00
Compare commits
89 Commits
v3.0.0
...
v7.0.0-rc.0
| Author | SHA1 | Date | |
|---|---|---|---|
| 28f9e498aa | |||
| 4001e8118b | |||
| b90317db60 | |||
| ef5e69859c | |||
| 1f4db0036c | |||
| e1a8a81488 | |||
| 3fad3a8995 | |||
| f8eff3c183 | |||
| ac4d16919b | |||
| 5009cbf6da | |||
| 4a0dcce0c9 | |||
| 5989e53c34 | |||
| 7a3a4fdb6d | |||
| d4f4f9f468 | |||
| 702ab13a0a | |||
| 070b7b9901 | |||
| 7e828eef67 | |||
| dd543ffdea | |||
| a2a45eb2fe | |||
| fa5620fc05 | |||
| d80befbe9b | |||
| d5c744e155 | |||
| 953de845eb | |||
| de415eaff5 | |||
| 8f3c6eb927 | |||
| 98923b24c5 | |||
| a92fe04503 | |||
| b510ea21e3 | |||
| 7799f0f9bf | |||
| 2ef157ef8a | |||
| 7e40a62efa | |||
| b4526dbb52 | |||
| e6be791eed | |||
| 2855f468ef | |||
| 7e70ee93ef | |||
| d29e574475 | |||
| c19912dc4b | |||
| c26e84f693 | |||
| 48902e8e6a | |||
| 07f89530df | |||
| 505179ce7b | |||
| 34ddee6aef | |||
| 462e60345e | |||
| f45372b796 | |||
| 7b5ccf7d9d | |||
| dc2f775d75 | |||
| 5f3ba73bc6 | |||
| 86b01b17fa | |||
| c2c3755729 | |||
| 5d47cda771 | |||
| dc750a9f2f | |||
| 7c0bc65842 | |||
| 89912779a9 | |||
| 484dc14f62 | |||
| 810a5705cf | |||
| 389830f189 | |||
| 45e881414f | |||
| c05755261d | |||
| 5608271fe3 | |||
| 5fd96b988e | |||
| b0a3bea8e4 | |||
| e99b140104 | |||
| a8e8db3572 | |||
| 2b6d19f691 | |||
| 499eb24a13 | |||
| e12d993761 | |||
| 229f7a2684 | |||
| 5fb9523081 | |||
| 178ec212f2 | |||
| 87b8b80feb | |||
| 9c1dbc7d07 | |||
| ab5dc9fc95 | |||
| 2dbed0d4a7 | |||
| f5460068b6 | |||
| 886bbbb9ba | |||
| da59af27fa | |||
| 0c244f2f28 | |||
| 1ab0330f1f | |||
| 8a95e723df | |||
| d5e7876887 | |||
| 611c336883 | |||
| ebd21042cd | |||
| dfb8be2ee7 | |||
| 6179ca545b | |||
| 962e52d426 | |||
| 6c31728af2 | |||
| 3ef43188b2 | |||
| 91fe5d8ddf | |||
| 3fc699af5c |
@@ -0,0 +1,49 @@
|
|||||||
|
# $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
|
||||||
|
# $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
|
||||||
|
# $$ Code Owners $$
|
||||||
|
# $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
|
||||||
|
# $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
|
||||||
|
#
|
||||||
|
# The configuration for Code Owners for graycoreio/magento2-devcontainer.
|
||||||
|
#
|
||||||
|
# For more info see: https://help.github.com/articles/about-codeowners/
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
# Concepts
|
||||||
|
# ================================================
|
||||||
|
#
|
||||||
|
# A CodeOwner should only review what they are comfortable reviewing. If you're not comfortable, say something.
|
||||||
|
# It is a CodeOwners responsibility to only accept the changes that they understand and deem necessary.
|
||||||
|
# The CodeOwners have final say on whether or not code is accepted.
|
||||||
|
# If multiple CodeOwners are listed, ALL code owners must approve the PR prior to merge.
|
||||||
|
# CodeOwners work in conjunction with Github's "Number of Required Approvals (1)" requirement.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
# GitHub username registry
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
# damienwebdev - Damien Retzinger
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################################################
|
||||||
|
#
|
||||||
|
# CODEOWNERS rules
|
||||||
|
# -----------------
|
||||||
|
#
|
||||||
|
# All the following rules are applied in the order specified in this file.
|
||||||
|
# The last rule that matches wins!
|
||||||
|
#
|
||||||
|
# See https://git-scm.com/docs/gitignore#_pattern_format for pattern syntax docs.
|
||||||
|
#
|
||||||
|
######################################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
# Default Owners
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
* @damienwebdev
|
||||||
@@ -32,11 +32,12 @@ 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 }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
- uses: ./supported-version
|
- uses: ./supported-version
|
||||||
with:
|
with:
|
||||||
kind: currently-supported
|
kind: currently-supported
|
||||||
@@ -50,10 +51,15 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- 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,9 +19,10 @@ 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@v4
|
- uses: actions/checkout@v6
|
||||||
- name: Set PHP Version
|
- name: Set PHP Version
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -18,9 +18,10 @@ 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@v4
|
- uses: actions/checkout@v6
|
||||||
- name: Set PHP Version
|
- name: Set PHP Version
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -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@v4
|
|
||||||
- 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@v4
|
|
||||||
- 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,16 +23,17 @@ 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 }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
- uses: ./supported-version
|
- uses: ./supported-version
|
||||||
with:
|
with:
|
||||||
kind: currently-supported
|
kind: currently-supported
|
||||||
|
include_services: true
|
||||||
id: supported-version
|
id: supported-version
|
||||||
- run: echo ${{ steps.supported-version.outputs.matrix }}
|
|
||||||
integration-workflow:
|
integration-workflow:
|
||||||
needs: compute_matrix
|
needs: compute_matrix
|
||||||
uses: ./.github/workflows/integration.yaml
|
uses: ./.github/workflows/integration.yaml
|
||||||
|
|||||||
@@ -18,9 +18,10 @@ 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@v4
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
- uses: ./semver-compare
|
- uses: ./semver-compare
|
||||||
id: version-compare-1
|
id: version-compare-1
|
||||||
|
|||||||
@@ -26,11 +26,12 @@ 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 }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
- uses: ./supported-version
|
- uses: ./supported-version
|
||||||
with:
|
with:
|
||||||
kind: currently-supported
|
kind: currently-supported
|
||||||
@@ -44,7 +45,7 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
- run: |
|
- run: |
|
||||||
PSEUDO_STORE_FULL_PATH=$(realpath "${{ env.PSEUDO_REPO_FOLDER }}")
|
PSEUDO_STORE_FULL_PATH=$(realpath "${{ env.PSEUDO_REPO_FOLDER }}")
|
||||||
@@ -58,7 +59,7 @@ jobs:
|
|||||||
php-version: ${{ matrix.php }}
|
php-version: ${{ matrix.php }}
|
||||||
tools: composer:v${{ matrix.composer }}
|
tools: composer:v${{ matrix.composer }}
|
||||||
|
|
||||||
- uses: actions/cache@v4
|
- uses: actions/cache@v5
|
||||||
id: setup-magento-store-cache
|
id: setup-magento-store-cache
|
||||||
with:
|
with:
|
||||||
key: setup-magento-ci | ${{ runner.os }} | ${{ matrix.magento }}
|
key: setup-magento-ci | ${{ runner.os }} | ${{ matrix.magento }}
|
||||||
@@ -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,24 +114,24 @@ 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@v4
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
- uses: ./setup-magento
|
- uses: ./setup-magento
|
||||||
id: setup-magento
|
id: setup-magento
|
||||||
with:
|
with:
|
||||||
php-version: 8.4
|
php-version: 8.4
|
||||||
tools: composer:v2
|
tools: composer:v2.8
|
||||||
mode: extension
|
mode: extension
|
||||||
magento_repository: ${{ env.MAGENTO_COMPOSER_REPO }}
|
magento_repository: ${{ env.MAGENTO_COMPOSER_REPO }}
|
||||||
composer_auth: ${{ secrets.COMPOSER_AUTH }}
|
composer_auth: ${{ secrets.COMPOSER_AUTH }}
|
||||||
magento_version: magento/project-community-edition:2.4.8
|
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'
|
|
||||||
|
|
||||||
- run: composer install
|
- run: composer install
|
||||||
name: Composer install
|
name: Composer install
|
||||||
|
|||||||
@@ -1,34 +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:
|
|
||||||
- 7.4
|
|
||||||
- 8.1
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- uses: ./unit-test
|
|
||||||
with:
|
|
||||||
source_folder: _test/demo-package
|
|
||||||
php_version: ${{ matrix.php_version }}
|
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
name: Check Extension Test
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch: {}
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- "_test/demo-package/**"
|
||||||
|
- ".github/workflows/_internal_check_extension.yaml"
|
||||||
|
- ".github/workflows/check-extension.yaml"
|
||||||
|
- "supported-version/**"
|
||||||
|
- "!(**/*.md)"
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- "_test/demo-package/**"
|
||||||
|
- ".github/workflows/_internal_check_extension.yaml"
|
||||||
|
- ".github/workflows/check-extension.yaml"
|
||||||
|
- "supported-version/**"
|
||||||
|
- "!(**/*.md)"
|
||||||
|
jobs:
|
||||||
|
compute_matrix:
|
||||||
|
if: "!startsWith(github.head_ref, 'release-please')"
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
matrix: ${{ steps.supported-version.outputs.matrix }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
- uses: ./supported-version
|
||||||
|
with:
|
||||||
|
kind: currently-supported
|
||||||
|
include_services: true
|
||||||
|
id: supported-version
|
||||||
|
check-workflow:
|
||||||
|
needs: compute_matrix
|
||||||
|
uses: ./.github/workflows/check-extension.yaml
|
||||||
|
with:
|
||||||
|
path: _test/demo-package
|
||||||
|
matrix: ${{ needs.compute_matrix.outputs.matrix }}
|
||||||
@@ -20,9 +20,10 @@ 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@v4
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
- run: npm ci
|
- run: npm ci
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|||||||
@@ -0,0 +1,49 @@
|
|||||||
|
# MageCheck Extension
|
||||||
|
|
||||||
|
A Github Workflow that runs various kinds of quality checks for a Magento Extension.
|
||||||
|
|
||||||
|
## Inputs
|
||||||
|
|
||||||
|
See the [check-extension.yaml](./check-extension.yaml)
|
||||||
|
|
||||||
|
| Input | Description | Required | Default |
|
||||||
|
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | -------- | --------------------------- |
|
||||||
|
| matrix | JSON string of [version matrix for Magento](./#matrix-format) | true | NULL |
|
||||||
|
| fail-fast | Same as Github's [fail-fast](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategyfail-fast) | false | true |
|
||||||
|
| path | The folder of the Magento store or extension that you are testing | false | . |
|
||||||
|
| magento_repository | Where to install Magento from | false | https://mirror.mage-os.org/ |
|
||||||
|
| composer_cache_key | A key to version the composer cache. Can be incremented if you need to bust the cache. | false | \_mageos |
|
||||||
|
|
||||||
|
### Matrix Format
|
||||||
|
|
||||||
|
The Magento matrix format outlined by the [supported versions action.](https://github.com/graycoreio/github-actions-magento2/tree/main/supported-version/supported.json)
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```yml
|
||||||
|
name: Unit 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 }}
|
||||||
|
check-extension:
|
||||||
|
needs: compute_matrix
|
||||||
|
uses: graycoreio/github-actions-magento2/.github/workflows/check-extension.yaml@main
|
||||||
|
with:
|
||||||
|
matrix: ${{ needs.compute_matrix.outputs.matrix }}
|
||||||
|
```
|
||||||
@@ -0,0 +1,252 @@
|
|||||||
|
name: MageCheck Extension
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
path:
|
||||||
|
type: string
|
||||||
|
required: false
|
||||||
|
default: "."
|
||||||
|
description: "The folder of the Magento store or extension that you are testing."
|
||||||
|
|
||||||
|
magento_repository:
|
||||||
|
type: string
|
||||||
|
required: false
|
||||||
|
default: "https://mirror.mage-os.org/"
|
||||||
|
description: "Where to install Magento from"
|
||||||
|
|
||||||
|
matrix:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
description: "The matrix of Magento versions to test against"
|
||||||
|
|
||||||
|
fail-fast:
|
||||||
|
type: boolean
|
||||||
|
required: false
|
||||||
|
default: true
|
||||||
|
|
||||||
|
composer_cache_key:
|
||||||
|
type: string
|
||||||
|
required: false
|
||||||
|
default: "_mageos"
|
||||||
|
description: A key to version the composer cache. Can be incremented if you need to bust the cache.
|
||||||
|
|
||||||
|
secrets:
|
||||||
|
composer_auth:
|
||||||
|
required: false
|
||||||
|
description: "Your composer credentials (typically a stringified json object of the contents of your auth.json)"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
unit-test-extension:
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix: ${{ fromJSON(inputs.matrix) }}
|
||||||
|
fail-fast: ${{ inputs.fail-fast }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
|
- uses: graycoreio/github-actions-magento2/setup-magento@v7.0.0-rc.0
|
||||||
|
id: setup-magento
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php }}
|
||||||
|
tools: composer:v${{ matrix.composer }}
|
||||||
|
mode: extension
|
||||||
|
magento_version: ${{ matrix.magento }}
|
||||||
|
magento_repository: ${{ inputs.magento_repository }}
|
||||||
|
composer_auth: ${{ secrets.composer_auth }}
|
||||||
|
|
||||||
|
- uses: graycoreio/github-actions-magento2/cache-magento@v7.0.0-rc.0
|
||||||
|
with:
|
||||||
|
composer_cache_key: ${{ inputs.composer_cache_key }}
|
||||||
|
|
||||||
|
- name: Add extension repository
|
||||||
|
working-directory: ${{ steps.setup-magento.outputs.path }}
|
||||||
|
run: composer config repositories.local path ${{ github.workspace }}/${{ inputs.path }}
|
||||||
|
|
||||||
|
- name: Get package name
|
||||||
|
id: package
|
||||||
|
run: echo "name=$(jq -r .name ${{ github.workspace }}/${{ inputs.path }}/composer.json)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Require extension
|
||||||
|
working-directory: ${{ steps.setup-magento.outputs.path }}
|
||||||
|
run: composer require "${{ steps.package.outputs.name }}:@dev" --no-install
|
||||||
|
|
||||||
|
- name: Composer install
|
||||||
|
working-directory: ${{ steps.setup-magento.outputs.path }}
|
||||||
|
run: composer install
|
||||||
|
env:
|
||||||
|
COMPOSER_AUTH: ${{ secrets.composer_auth }}
|
||||||
|
COMPOSER_MIRROR_PATH_REPOS: 1
|
||||||
|
|
||||||
|
- name: Configure phpunit.xml.dist
|
||||||
|
working-directory: ${{ steps.setup-magento.outputs.path }}
|
||||||
|
run: |
|
||||||
|
## Add the testsuite
|
||||||
|
cat > /tmp/testsuite.xml << 'EOF'
|
||||||
|
<testsuite name="Extension_Unit_Tests">
|
||||||
|
<directory>../../../vendor/${{ steps.package.outputs.name }}/Test/Unit</directory>
|
||||||
|
</testsuite>
|
||||||
|
EOF
|
||||||
|
sed -i '/<testsuites>/r /tmp/testsuite.xml' dev/tests/unit/phpunit.xml.dist
|
||||||
|
|
||||||
|
## Disable allure (See https://github.com/magento/magento2/issues/36702 )
|
||||||
|
## (╯°□°)╯︵ ┻━┻
|
||||||
|
sed -i '/<extensions>/,/<\/extensions>/d' dev/tests/unit/phpunit.xml.dist
|
||||||
|
|
||||||
|
- name: Run extension unit tests
|
||||||
|
working-directory: ${{ steps.setup-magento.outputs.path }}
|
||||||
|
run: vendor/bin/phpunit -c dev/tests/unit/phpunit.xml.dist --testsuite Extension_Unit_Tests
|
||||||
|
|
||||||
|
compile-extension:
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix: ${{ fromJSON(inputs.matrix) }}
|
||||||
|
fail-fast: ${{ inputs.fail-fast }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
|
- uses: graycoreio/github-actions-magento2/setup-magento@v7.0.0-rc.0
|
||||||
|
id: setup-magento
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php }}
|
||||||
|
tools: composer:v${{ matrix.composer }}
|
||||||
|
mode: extension
|
||||||
|
magento_version: ${{ matrix.magento }}
|
||||||
|
magento_repository: ${{ inputs.magento_repository }}
|
||||||
|
composer_auth: ${{ secrets.composer_auth }}
|
||||||
|
|
||||||
|
- uses: graycoreio/github-actions-magento2/cache-magento@v7.0.0-rc.0
|
||||||
|
with:
|
||||||
|
composer_cache_key: ${{ inputs.composer_cache_key }}
|
||||||
|
|
||||||
|
- name: Add extension repository
|
||||||
|
working-directory: ${{ steps.setup-magento.outputs.path }}
|
||||||
|
run: composer config repositories.local path ${{ github.workspace }}/${{ inputs.path }}
|
||||||
|
|
||||||
|
- name: Get package name
|
||||||
|
id: package
|
||||||
|
run: echo "name=$(jq -r .name ${{ github.workspace }}/${{ inputs.path }}/composer.json)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Require extension
|
||||||
|
working-directory: ${{ steps.setup-magento.outputs.path }}
|
||||||
|
run: composer require "${{ steps.package.outputs.name }}:@dev" --no-install
|
||||||
|
env:
|
||||||
|
COMPOSER_AUTH: ${{ secrets.composer_auth }}
|
||||||
|
|
||||||
|
- name: Composer install
|
||||||
|
working-directory: ${{ steps.setup-magento.outputs.path }}
|
||||||
|
run: composer install
|
||||||
|
env:
|
||||||
|
COMPOSER_AUTH: ${{ secrets.composer_auth }}
|
||||||
|
COMPOSER_MIRROR_PATH_REPOS: 1
|
||||||
|
|
||||||
|
- name: Enable all modules
|
||||||
|
working-directory: ${{ steps.setup-magento.outputs.path }}
|
||||||
|
run: php bin/magento module:enable --all
|
||||||
|
|
||||||
|
- name: Compile
|
||||||
|
working-directory: ${{ steps.setup-magento.outputs.path }}
|
||||||
|
run: php bin/magento setup:di:compile
|
||||||
|
|
||||||
|
coding-standard:
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix: ${{ fromJSON(inputs.matrix) }}
|
||||||
|
fail-fast: ${{ inputs.fail-fast }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
|
- uses: shivammathur/setup-php@v2
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php }}
|
||||||
|
tools: composer:v${{ matrix.composer }}
|
||||||
|
coverage: none
|
||||||
|
|
||||||
|
- uses: graycoreio/github-actions-magento2/coding-standard@v7.0.0-rc.0
|
||||||
|
with:
|
||||||
|
path: ${{ inputs.path }}
|
||||||
|
composer_auth: ${{ secrets.composer_auth }}
|
||||||
|
|
||||||
|
integration_test:
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix: ${{ fromJSON(inputs.matrix) }}
|
||||||
|
fail-fast: ${{ inputs.fail-fast }}
|
||||||
|
services: ${{ matrix.services }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
|
- uses: graycoreio/github-actions-magento2/setup-magento@v7.0.0-rc.0
|
||||||
|
id: setup-magento
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php }}
|
||||||
|
tools: composer:v${{ matrix.composer }}
|
||||||
|
mode: extension
|
||||||
|
magento_version: ${{ matrix.magento }}
|
||||||
|
magento_repository: ${{ inputs.magento_repository }}
|
||||||
|
composer_auth: ${{ secrets.composer_auth }}
|
||||||
|
|
||||||
|
- uses: graycoreio/github-actions-magento2/cache-magento@v7.0.0-rc.0
|
||||||
|
with:
|
||||||
|
composer_cache_key: ${{ inputs.composer_cache_key }}
|
||||||
|
|
||||||
|
- name: Add extension repository
|
||||||
|
working-directory: ${{ steps.setup-magento.outputs.path }}
|
||||||
|
run: composer config repositories.local path ${{ github.workspace }}/${{ inputs.path }}
|
||||||
|
|
||||||
|
- name: Get package name
|
||||||
|
id: package
|
||||||
|
run: echo "name=$(jq -r .name ${{ github.workspace }}/${{ inputs.path }}/composer.json)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Require extension
|
||||||
|
working-directory: ${{ steps.setup-magento.outputs.path }}
|
||||||
|
run: composer require "${{ steps.package.outputs.name }}:@dev" --no-install
|
||||||
|
env:
|
||||||
|
COMPOSER_AUTH: ${{ secrets.composer_auth }}
|
||||||
|
|
||||||
|
- name: Composer install
|
||||||
|
working-directory: ${{ steps.setup-magento.outputs.path }}
|
||||||
|
run: composer install
|
||||||
|
env:
|
||||||
|
COMPOSER_AUTH: ${{ secrets.composer_auth }}
|
||||||
|
COMPOSER_MIRROR_PATH_REPOS: 1
|
||||||
|
|
||||||
|
- uses: graycoreio/github-actions-magento2/get-magento-version@v7.0.0-rc.0
|
||||||
|
id: magento-version
|
||||||
|
with:
|
||||||
|
working-directory: ${{ steps.setup-magento.outputs.path }}
|
||||||
|
|
||||||
|
- name: Replace Configuration Settings for env
|
||||||
|
working-directory: ${{ steps.setup-magento.outputs.path }}/dev/tests/integration
|
||||||
|
run: |
|
||||||
|
sed -i "s/'db-host' => 'localhost'/'db-host' => '127.0.0.1'/" etc/install-config-mysql.php.dist
|
||||||
|
sed -i "s/'db-user' => 'root'/'db-user' => 'user'/" etc/install-config-mysql.php.dist
|
||||||
|
sed -i "s/'db-password' => '123123q'/'db-password' => 'password'/" etc/install-config-mysql.php.dist
|
||||||
|
sed -i "s/'elasticsearch-host' => 'localhost'/'elasticsearch-host' => '127.0.0.1'/" etc/install-config-mysql.php.dist
|
||||||
|
sed -i "s/'amqp-host' => 'localhost'/'amqp-host' => '127.0.0.1'/" etc/install-config-mysql.php.dist
|
||||||
|
|
||||||
|
- name: Enable log-bin-trust-function-creators
|
||||||
|
run: |
|
||||||
|
mysql -h127.0.0.1 -uroot -prootpassword -e "SET GLOBAL log_bin_trust_function_creators = 1;"
|
||||||
|
|
||||||
|
- name: Configure phpunit.xml.dist
|
||||||
|
working-directory: ${{ steps.setup-magento.outputs.path }}
|
||||||
|
run: |
|
||||||
|
## Add the testsuite
|
||||||
|
cat > /tmp/testsuite.xml << 'EOF'
|
||||||
|
<testsuite name="Extension_Integration_Tests">
|
||||||
|
<directory>../../../vendor/${{ steps.package.outputs.name }}/Test/Integration</directory>
|
||||||
|
</testsuite>
|
||||||
|
EOF
|
||||||
|
sed -i '/<testsuites>/r /tmp/testsuite.xml' dev/tests/integration/phpunit.xml.dist
|
||||||
|
|
||||||
|
- name: Run Integration Tests
|
||||||
|
working-directory: ${{ steps.setup-magento.outputs.path }}/dev/tests/integration
|
||||||
|
run: ../../../vendor/bin/phpunit -c phpunit.xml.dist --testsuite Extension_Integration_Tests
|
||||||
|
|
||||||
|
- name: Upload test sandbox dir
|
||||||
|
uses: actions/upload-artifact@v6
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
name: sandbox-data-${{ steps.magento-version.outputs.version }}
|
||||||
|
path: ${{ steps.setup-magento.outputs.path }}/dev/tests/integration/tmp/sandbox-*
|
||||||
|
retention-days: 3
|
||||||
@@ -8,9 +8,10 @@ See the [integration.yaml](./integration.yaml)
|
|||||||
|
|
||||||
| Input | Description | Required | Default |
|
| Input | Description | Required | Default |
|
||||||
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----------------------------- |
|
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----------------------------- |
|
||||||
| matrix | JSON string of [version matrix for Magento](./#matrix-format) | true | NULL |
|
| matrix | JSON string of [version matrix for Magento](./#matrix-format). Must include a `services` key (pass `include_services: true` to the supported-version action). | true | NULL |
|
||||||
| fail-fast | Same as Github's [fail-fast](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategyfail-fast) | false | true |
|
| fail-fast | Same as Github's [fail-fast](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategyfail-fast) | false | true |
|
||||||
| package_name | The name of the package | true | NULL |
|
| package_name | The name of the package | true | NULL |
|
||||||
|
| use_local_source | Whether or not you want to test your local package or not. | false | true |
|
||||||
| source_folder | The source folder of the package | false | $GITHUB_WORKSPACE |
|
| source_folder | The source folder of the package | false | $GITHUB_WORKSPACE |
|
||||||
| magento_directory | The folder where Magento will be installed | false | ../magento2 |
|
| magento_directory | The folder where Magento will be installed | false | ../magento2 |
|
||||||
| magento_repository | Where to install Magento from | false | https://mirror.mage-os.org/ |
|
| magento_repository | Where to install Magento from | false | https://mirror.mage-os.org/ |
|
||||||
@@ -46,10 +47,11 @@ jobs:
|
|||||||
outputs:
|
outputs:
|
||||||
matrix: ${{ steps.supported-version.outputs.matrix }}
|
matrix: ${{ steps.supported-version.outputs.matrix }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v6
|
||||||
- uses: graycoreio/github-actions-magento2/supported-version@main
|
- uses: graycoreio/github-actions-magento2/supported-version@main
|
||||||
|
with:
|
||||||
|
include_services: true
|
||||||
id: supported-version
|
id: supported-version
|
||||||
- run: echo ${{ steps.supported-version.outputs.matrix }}
|
|
||||||
integration-workflow:
|
integration-workflow:
|
||||||
needs: compute_matrix
|
needs: compute_matrix
|
||||||
uses: graycoreio/github-actions-magento2/.github/workflows/integration.yaml@main
|
uses: graycoreio/github-actions-magento2/.github/workflows/integration.yaml@main
|
||||||
|
|||||||
@@ -59,50 +59,12 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
integration_test:
|
integration_test:
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
|
services: ${{ matrix.services }}
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: ${{ inputs.fail-fast }}
|
fail-fast: ${{ inputs.fail-fast }}
|
||||||
matrix: ${{ fromJSON(inputs.matrix) }}
|
matrix: ${{ fromJSON(inputs.matrix) }}
|
||||||
services:
|
|
||||||
elasticsearch:
|
|
||||||
image: ${{ matrix.elasticsearch }}
|
|
||||||
env:
|
|
||||||
# By default, ElasticSearch refuses to spawn in single node configuration, as it expects redundancy.
|
|
||||||
# This is a dev environment, so redundancy is just wasteful.
|
|
||||||
discovery.type: single-node
|
|
||||||
# Disable HTTPS and password authentication
|
|
||||||
# this is a local dev environment, so the added CA chain complexity is an extreme overkill
|
|
||||||
xpack.security.enabled: false
|
|
||||||
xpack.security.http.ssl.enabled: false
|
|
||||||
xpack.security.transport.ssl.enabled: false
|
|
||||||
|
|
||||||
options: >-
|
|
||||||
--health-cmd "curl http://localhost:9200/_cluster/health"
|
|
||||||
--health-interval 10s
|
|
||||||
--health-timeout 5s
|
|
||||||
--health-retries 10
|
|
||||||
ports:
|
|
||||||
- 9200:9200
|
|
||||||
|
|
||||||
mysql:
|
|
||||||
image: ${{ matrix.mysql }}
|
|
||||||
env:
|
|
||||||
MYSQL_DATABASE: magento_integration_tests
|
|
||||||
MYSQL_USER: user
|
|
||||||
MYSQL_PASSWORD: password
|
|
||||||
MYSQL_ROOT_PASSWORD: rootpassword
|
|
||||||
ports:
|
|
||||||
- 3306:3306
|
|
||||||
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
|
||||||
|
|
||||||
rabbitmq:
|
|
||||||
image: ${{ matrix.rabbitmq }}
|
|
||||||
env:
|
|
||||||
RABBITMQ_DEFAULT_USER: guest
|
|
||||||
RABBITMQ_DEFAULT_PASS: guest
|
|
||||||
ports:
|
|
||||||
- 5672:5672
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
- name: Set PHP Version
|
- name: Set PHP Version
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
@@ -110,13 +72,17 @@ jobs:
|
|||||||
tools: composer:v${{ matrix.composer }}
|
tools: composer:v${{ matrix.composer }}
|
||||||
coverage: none
|
coverage: none
|
||||||
|
|
||||||
|
- name: Allow SQL triggers
|
||||||
|
run: |
|
||||||
|
mysql --host 127.0.0.1 --port ${{ job.services.mysql.ports['3306'] }} -u root -prootpassword -e "set global log_bin_trust_function_creators=1;"
|
||||||
|
|
||||||
- run: composer create-project --repository-url="${{ inputs.magento_repository }}" "${{ matrix.magento }}" ${{ inputs.magento_directory }} --no-install
|
- run: composer create-project --repository-url="${{ inputs.magento_repository }}" "${{ matrix.magento }}" ${{ inputs.magento_directory }} --no-install
|
||||||
shell: bash
|
shell: bash
|
||||||
env:
|
env:
|
||||||
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 }}
|
||||||
@@ -130,7 +96,7 @@ jobs:
|
|||||||
|
|
||||||
|
|
||||||
- name: "Cache Composer Packages"
|
- name: "Cache Composer Packages"
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v5
|
||||||
with:
|
with:
|
||||||
key: "composer | v5 | ${{ inputs.composer_cache_key }} | ${{ hashFiles('composer.lock') }} | ${{ matrix.os }} | ${{ matrix.composer }} | ${{ matrix.php }} | ${{ matrix.magento }}"
|
key: "composer | v5 | ${{ inputs.composer_cache_key }} | ${{ hashFiles('composer.lock') }} | ${{ matrix.os }} | ${{ matrix.composer }} | ${{ matrix.php }} | ${{ matrix.magento }}"
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
@@ -174,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
|
||||||
@@ -215,7 +182,7 @@ jobs:
|
|||||||
name: Run Integration Tests
|
name: Run Integration Tests
|
||||||
|
|
||||||
- name: Upload test sandbox dir
|
- name: Upload test sandbox dir
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v6
|
||||||
if: failure()
|
if: failure()
|
||||||
with:
|
with:
|
||||||
name: sandbox-data-${{ steps.magento-version.outputs.version }}
|
name: sandbox-data-${{ steps.magento-version.outputs.version }}
|
||||||
|
|||||||
@@ -4,13 +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: google-github-actions/release-please-action@v4
|
- id: release
|
||||||
|
uses: googleapis/release-please-action@v4
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.GRAYCORE_GITHUB_TOKEN }}
|
token: ${{ secrets.GRAYCORE_GITHUB_TOKEN }}
|
||||||
command: manifest
|
|
||||||
default-branch: main
|
- 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,2 +1,3 @@
|
|||||||
node_modules/
|
node_modules/
|
||||||
.idea/
|
.idea/
|
||||||
|
tmp
|
||||||
@@ -1 +1 @@
|
|||||||
{".":"3.0.0"}
|
{".":"7.0.0-rc.0"}
|
||||||
|
|||||||
+120
@@ -2,6 +2,126 @@
|
|||||||
|
|
||||||
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)
|
||||||
|
|
||||||
|
|
||||||
|
### ⚠ BREAKING CHANGES
|
||||||
|
|
||||||
|
* remove unmaintained setup-di-compile action
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* remove unmaintained setup-di-compile action ([7b5ccf7](https://github.com/graycoreio/github-actions-magento2/commit/7b5ccf7d9d67da8c67e77b222b89b0abf332b183))
|
||||||
|
* use actions/cache@v5 ([86b01b1](https://github.com/graycoreio/github-actions-magento2/commit/86b01b17faf443802bdf827fdbb706c55ae7e3fb))
|
||||||
|
* use actions/checkout@v6 ([c2c3755](https://github.com/graycoreio/github-actions-magento2/commit/c2c375572967ee6ff8afc3a406b8d5a02880159e))
|
||||||
|
* use actions/upload-artifact@v6 ([5f3ba73](https://github.com/graycoreio/github-actions-magento2/commit/5f3ba73bc67a5c09e22f83c6e51421596103e0ce))
|
||||||
|
|
||||||
|
## [4.0.1](https://github.com/graycoreio/github-actions-magento2/compare/v4.0.0...v4.0.1) (2025-12-16)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **supported-version:** handle semver-ish values from old magento verisons ([7c0bc65](https://github.com/graycoreio/github-actions-magento2/commit/7c0bc65842e0e866cd957a44f879d37d04d11dce))
|
||||||
|
|
||||||
|
## [4.0.0](https://github.com/graycoreio/github-actions-magento2/compare/v3.0.0...v4.0.0) (2025-12-15)
|
||||||
|
|
||||||
|
|
||||||
|
### ⚠ BREAKING CHANGES
|
||||||
|
|
||||||
|
* **integration:** use services from supported-version ([#207](https://github.com/graycoreio/github-actions-magento2/issues/207))
|
||||||
|
* **unit-test:** set default unit-test php version to 8.4
|
||||||
|
* **supported-version:** upgrade to use node24
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **check-extension:** add coding standard ([#203](https://github.com/graycoreio/github-actions-magento2/issues/203)) ([da59af2](https://github.com/graycoreio/github-actions-magento2/commit/da59af27fa8aa088a53f5e99b834ed8b88959395))
|
||||||
|
* **check-extension:** add integration tests ([#205](https://github.com/graycoreio/github-actions-magento2/issues/205)) ([87b8b80](https://github.com/graycoreio/github-actions-magento2/commit/87b8b80febfa50df4107623942627079d4f12850))
|
||||||
|
* **check-extension:** add new check-extension workflow ([#201](https://github.com/graycoreio/github-actions-magento2/issues/201)) ([1ab0330](https://github.com/graycoreio/github-actions-magento2/commit/1ab0330f1f9f7663dec418d22c2674eaf599cc35))
|
||||||
|
* **check-extension:** add setup:di:compile test ([#202](https://github.com/graycoreio/github-actions-magento2/issues/202)) ([0c244f2](https://github.com/graycoreio/github-actions-magento2/commit/0c244f2f2891e3b8250b12c66781981775cbeb09))
|
||||||
|
* **check-extension:** prefer phpcs conf if it exists ([810a570](https://github.com/graycoreio/github-actions-magento2/commit/810a5705cfc5fafa8230214ab84a44fc86de5baf))
|
||||||
|
* **extension-check:** support composer auth ([#204](https://github.com/graycoreio/github-actions-magento2/issues/204)) ([886bbbb](https://github.com/graycoreio/github-actions-magento2/commit/886bbbb9ba2cb296c9f945e37bcd2669864384af))
|
||||||
|
* **integration:** use services from supported-version ([#207](https://github.com/graycoreio/github-actions-magento2/issues/207)) ([5fb9523](https://github.com/graycoreio/github-actions-magento2/commit/5fb9523081c1f6e353320c4540d609ce735cf474))
|
||||||
|
* **supported-version:** Add 2.4.5-p14, 2.4.6-p12, 2.4.7-p7 and 2.4.8-p2 ([#295](https://github.com/graycoreio/github-actions-magento2/issues/295)) ([499eb24](https://github.com/graycoreio/github-actions-magento2/commit/499eb24a13ed9f783c4af7ffac5bd5339c357774))
|
||||||
|
* **supported-version:** add optional services output for each matrix entry ([#206](https://github.com/graycoreio/github-actions-magento2/issues/206)) ([9c1dbc7](https://github.com/graycoreio/github-actions-magento2/commit/9c1dbc7d072a9864f9eb1d1a6219b8aaa99f0bcd))
|
||||||
|
* **supported-versions:** 1.3.1 ([#297](https://github.com/graycoreio/github-actions-magento2/issues/297)) ([a8e8db3](https://github.com/graycoreio/github-actions-magento2/commit/a8e8db3572abfabfd64a5a701f62b630aabc3260))
|
||||||
|
* **supported-versions:** update matrix for Magento 2.4.8-p3, 2.4.7-p8, 2.4.6-p13 ([#301](https://github.com/graycoreio/github-actions-magento2/issues/301)) ([e99b140](https://github.com/graycoreio/github-actions-magento2/commit/e99b140104280b87fd23e482f86b45442e7a6167))
|
||||||
|
* **supported-version:** update matrix for Mage-OS 2.0.0 ([#298](https://github.com/graycoreio/github-actions-magento2/issues/298)) ([b0a3bea](https://github.com/graycoreio/github-actions-magento2/commit/b0a3bea8e4d0fbead1e5a7eab72d56a025845049))
|
||||||
|
* **supported-version:** upgrade to use node24 ([3ef4318](https://github.com/graycoreio/github-actions-magento2/commit/3ef43188b22ccc25226e7e39bfbe5d5ee2599a58))
|
||||||
|
* **unit-test:** set default unit-test php version to 8.4 ([8a95e72](https://github.com/graycoreio/github-actions-magento2/commit/8a95e723df2aec4a5a528189e2df73aebe9ad148))
|
||||||
|
* updated supported-version matrix for Mage-OS release 1.2.0 ([f546006](https://github.com/graycoreio/github-actions-magento2/commit/f5460068b60334f81a186235c67c8239ab2f6e14))
|
||||||
|
* upgrade setup-magento action test to v2.4.8-p3 ([#198](https://github.com/graycoreio/github-actions-magento2/issues/198)) ([6c31728](https://github.com/graycoreio/github-actions-magento2/commit/6c31728af28fbf37cebc296192ee10367dcdd546))
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* 'invalid kind provided' when defining `usable` type ([#305](https://github.com/graycoreio/github-actions-magento2/issues/305)) ([c057552](https://github.com/graycoreio/github-actions-magento2/commit/c05755261db8ae7f335d559bea60c231b04bfc5b))
|
||||||
|
* allow matrix testing without EOL versions ([#299](https://github.com/graycoreio/github-actions-magento2/issues/299)) ([5608271](https://github.com/graycoreio/github-actions-magento2/commit/5608271fe3546ed7ed6d94e33b3984b3bb8dbfd6))
|
||||||
|
* **supported-verison:** upstream version for Mage-OS 2.0.0 ([#302](https://github.com/graycoreio/github-actions-magento2/issues/302)) ([5fd96b9](https://github.com/graycoreio/github-actions-magento2/commit/5fd96b988e2f3576aa5b7add7fa5c9018ad35416))
|
||||||
|
* **supported-version:** adjust correct key for mage-os/project-community-edition:>=1.2 <1.3 ([e12d993](https://github.com/graycoreio/github-actions-magento2/commit/e12d9937614ebd8537ce791e1cf2c34672716871))
|
||||||
|
|
||||||
## [3.0.0](https://github.com/graycoreio/github-actions-magento2/compare/v2.0.0...v3.0.0) (2025-04-09)
|
## [3.0.0](https://github.com/graycoreio/github-actions-magento2/compare/v2.0.0...v3.0.0) (2025-04-09)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,33 +3,33 @@
|
|||||||
<div align="center">
|
<div align="center">
|
||||||
|
|
||||||

|

|
||||||
[](https://github.com/graycoreio/github-actions-magento2/actions/workflows/_internal-unit.yaml)
|
[](https://github.com/graycoreio/github-actions-magento2/actions/workflows/_internal-integration.yaml)
|
||||||
[](https://github.com/graycoreio/github-actions-magento2/actions/workflows/_internal-integration.yaml)
|
[](https://github.com/graycoreio/github-actions-magento2/actions/workflows/_internal_check_extension.yaml)
|
||||||
[](https://github.com/graycoreio/github-actions-magento2/actions/workflows/_internal-install.yaml)
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
Opinionated Github Actions and Workflows to make building, testing, and maintaining Magento 2 Modules easier.
|
Opinionated Github Actions and Workflows to make building, testing, and maintaining Magento 2 Modules easier.
|
||||||
|
|
||||||
* [README if you are new to Github Actions.](https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions#the-components-of-github-actions)
|
- [README if you are new to Github Actions.](https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions#the-components-of-github-actions)
|
||||||
* [What is a workflow?](https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions#workflows)
|
- [What is a workflow?](https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions#workflows)
|
||||||
* [What is an action?](https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions#actions)
|
- [What is an action?](https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions#actions)
|
||||||
|
|
||||||
## Workflows
|
## Workflows
|
||||||
|
|
||||||
| Workflow Name | Description |
|
| Workflow Name | Description |
|
||||||
| ------------------------------------------------------------- | ---------------------------------------------------------------------- |
|
| -------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
|
||||||
| [Integration Test](./.github/workflows/integration-README.md) | A Github Workflow that runs the Integration Tests of a Magento Package |
|
| [Integration Test](./.github/workflows/integration-README.md) | A Github Workflow that runs the Integration Tests of a Magento Package |
|
||||||
|
| [MageCheck Extension](./.github/workflows/check-extension-README.md) | A Github Workflow that runs various kinds of quality checks for a Magento Extension. |
|
||||||
|
|
||||||
## 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 |
|
||||||
|
|||||||
@@ -1,2 +1,3 @@
|
|||||||
vendor/
|
vendor/
|
||||||
.phpunit.result.cache
|
.phpunit.result.cache
|
||||||
|
composer.lock
|
||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -45,6 +45,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpunit/phpunit": "^9.5"
|
"phpunit/phpunit": "^9.5 || ^10 || ^11 || ^12"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
-6001
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
|||||||
|
<?php /** @var \Magento\Framework\View\Element\Template $block */ ?>
|
||||||
|
<div>demo</div>
|
||||||
@@ -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
|
||||||
|
|
||||||
@@ -29,10 +28,8 @@ jobs:
|
|||||||
showcase_cache:
|
showcase_cache:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- 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
|
||||||
|
|||||||
@@ -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"
|
||||||
@@ -36,7 +32,7 @@ runs:
|
|||||||
id: cache-magento-get-composer-version
|
id: cache-magento-get-composer-version
|
||||||
|
|
||||||
- name: "Cache Composer Packages"
|
- name: "Cache Composer Packages"
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v5
|
||||||
id: cache-magento-cache
|
id: cache-magento-cache
|
||||||
with:
|
with:
|
||||||
key: "composer | v5.8 | ${{ inputs.composer_cache_key }} | ${{ steps.cache-magento-get-composer-version.outputs.version }} | ${{ steps.cache-magento-get-php-version.outputs.version }}"
|
key: "composer | v5.8 | ${{ inputs.composer_cache_key }} | ${{ steps.cache-magento-get-composer-version.outputs.version }} | ${{ steps.cache-magento-get-php-version.outputs.version }}"
|
||||||
|
|||||||
@@ -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: "*"
|
|
||||||
```
|
|
||||||
@@ -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@v4
|
|
||||||
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@v4
|
|
||||||
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 }}
|
|
||||||
@@ -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,10 +28,18 @@ 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.
|
||||||
|
|||||||
+59
-51
@@ -3,20 +3,10 @@ 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
|
||||||
@@ -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@v3
|
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"
|
||||||
@@ -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.
|
||||||
@@ -25,7 +25,7 @@ jobs:
|
|||||||
fix:
|
fix:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v6
|
||||||
- uses: graycoreio/github-actions-magento2/fix-magento-install@main
|
- uses: graycoreio/github-actions-magento2/fix-magento-install@main
|
||||||
with:
|
with:
|
||||||
magento_directory: path/to/magento
|
magento_directory: path/to/magento
|
||||||
|
|||||||
@@ -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 }}
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
name: A job to compute an installed Composer version.
|
name: A job to compute an installed Composer version.
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v6
|
||||||
- uses: graycoreio/github-actions-magento2/get-composer-version@main
|
- uses: graycoreio/github-actions-magento2/get-composer-version@main
|
||||||
id: get-composer-version
|
id: get-composer-version
|
||||||
- run: echo version ${{ steps.get-composer-version.outputs.version }}
|
- run: echo version ${{ steps.get-composer-version.outputs.version }}
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
name: A job to compute an installed Magento version.
|
name: A job to compute an installed Magento version.
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v6
|
||||||
- uses: graycoreio/github-actions-magento2/get-magento-version@main
|
- uses: graycoreio/github-actions-magento2/get-magento-version@main
|
||||||
id: get-magento-version
|
id: get-magento-version
|
||||||
- run: echo version ${{ steps.get-magento-version.outputs.version }}
|
- run: echo version ${{ steps.get-magento-version.outputs.version }}
|
||||||
|
|||||||
@@ -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@v2
|
|
||||||
- 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@v2
|
|
||||||
- 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
|
|
||||||
```
|
|
||||||
@@ -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@v3
|
|
||||||
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"
|
|
||||||
Generated
+655
-2526
File diff suppressed because it is too large
Load Diff
+10
-11
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@graycoreio/github-actions-magento2",
|
"name": "@graycoreio/github-actions-magento2",
|
||||||
"version": "3.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 -",
|
||||||
@@ -18,18 +18,17 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/graycoreio/github-actions-magento2#readme",
|
"homepage": "https://github.com/graycoreio/github-actions-magento2#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": "^1.10.0"
|
"@actions/core": "^1.11.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "^29.5.11",
|
"@types/jest": "^29.5.14",
|
||||||
"@types/node": "^22.13.9",
|
"@types/node": "^24.10.4",
|
||||||
"@typescript-eslint/eslint-plugin": "^8.26.1",
|
"@typescript-eslint/eslint-plugin": "^8.49.0",
|
||||||
"@typescript-eslint/parser": "^8.26.1",
|
"@typescript-eslint/parser": "^8.49.0",
|
||||||
"esbuild": "^0.25.1",
|
"esbuild": "^0.25.12",
|
||||||
"eslint": "^9.22.0",
|
"eslint": "^9.39.2",
|
||||||
"jest": "^29.5.0",
|
"jest": "^29.5.0",
|
||||||
"standard-version": "^9.5.0",
|
"ts-jest": "^29.4.6",
|
||||||
"ts-jest": "^29.2.6",
|
"typescript": "^5.9.3"
|
||||||
"typescript": "^5.8.2"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
name: A job to semantically compare two versions
|
name: A job to semantically compare two versions
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v6
|
||||||
- uses: graycoreio/github-actions-magento2/semver-compare@main
|
- uses: graycoreio/github-actions-magento2/semver-compare@main
|
||||||
with:
|
with:
|
||||||
version: 2.1.0
|
version: 2.1.0
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
# Magento 2 setup:di:compile action
|
|
||||||
A Github Action that runs `php bin/magento setup:di:compile` and checks for compilation errors.
|
|
||||||
|
|
||||||
## Inputs
|
|
||||||
|
|
||||||
See the [action.yml](./action.yml)
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
```yml
|
|
||||||
name: Magento setup:di:compile check
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
pull_request:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
setup-di-compile:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: graycoreio/github-actions-magento2/setup-di-compile@main
|
|
||||||
with:
|
|
||||||
php_version: "8.3"
|
|
||||||
composer_version: "2"
|
|
||||||
```
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
name: "Magento compilation (setup:di:compile)"
|
|
||||||
author: "MageOS"
|
|
||||||
description: "A Github Action that runs bin/magento setup:di:compile."
|
|
||||||
|
|
||||||
inputs:
|
|
||||||
php_version:
|
|
||||||
required: true
|
|
||||||
default: "8.3"
|
|
||||||
description: "PHP version used to run setup:di:compile."
|
|
||||||
|
|
||||||
composer_version:
|
|
||||||
required: true
|
|
||||||
default: "2"
|
|
||||||
description: "The version of composer to use."
|
|
||||||
|
|
||||||
runs:
|
|
||||||
using: composite
|
|
||||||
steps:
|
|
||||||
- name: Checkout Project
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Get changed files that could break compilation
|
|
||||||
uses: tj-actions/changed-files@v39
|
|
||||||
id: changed-files
|
|
||||||
with:
|
|
||||||
files_yaml: |
|
|
||||||
magento:
|
|
||||||
- 'composer.lock'
|
|
||||||
- 'composer.json'
|
|
||||||
- '**/*.php'
|
|
||||||
- '**/*.xml'
|
|
||||||
|
|
||||||
- name: Set PHP Version
|
|
||||||
if: steps.changed-files.outputs.magento_any_changed == 'true'
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
|
||||||
php-version: ${{ inputs.php_version }}
|
|
||||||
tools: composer:v${{ inputs.composer_version }}
|
|
||||||
coverage: none
|
|
||||||
|
|
||||||
- uses: graycoreio/github-actions-magento2/cache-magento@main
|
|
||||||
with:
|
|
||||||
mode: 'store'
|
|
||||||
|
|
||||||
- name: Install composer dependencies
|
|
||||||
if: steps.changed-files.outputs.magento_any_changed == 'true'
|
|
||||||
shell: bash
|
|
||||||
run: composer install
|
|
||||||
|
|
||||||
- name: Enable all modules
|
|
||||||
if: steps.changed-files.outputs.magento_any_changed == 'true'
|
|
||||||
shell: bash
|
|
||||||
run: php bin/magento module:enable --all
|
|
||||||
|
|
||||||
- name: Compile
|
|
||||||
if: steps.changed-files.outputs.magento_any_changed == 'true'
|
|
||||||
shell: bash
|
|
||||||
run: php bin/magento setup:di:compile
|
|
||||||
+78
-47
@@ -1,79 +1,110 @@
|
|||||||
# Magento 2 Package Installation Test Action
|
# Setup Magento
|
||||||
|
|
||||||
A Github Action that sets Magento up to the point of composer install.
|
A GitHub Action that prepares a Magento 2 environment for testing. It handles PHP setup and Magento project creation, stopping just before `composer install` so you can add custom repositories or packages.
|
||||||
|
|
||||||
|
## Modes
|
||||||
|
|
||||||
|
The action operates in two modes:
|
||||||
|
|
||||||
|
- **`extension`** (default): Creates a fresh Magento project in `../magento2` for testing your extension against. Use this when your repository contains a Magento module/extension.
|
||||||
|
- **`store`**: Uses your existing Magento project in the working directory. Use this when your repository is a full Magento store.
|
||||||
|
|
||||||
## Inputs
|
## Inputs
|
||||||
|
|
||||||
See the [action.yml](./action.yml)
|
| Input | Required | Default | Description |
|
||||||
|
|-------|----------|---------|-------------|
|
||||||
|
| `php-version` | Yes | `8.4` | PHP version to install |
|
||||||
|
| `mode` | Yes | `extension` | Either `extension` or `store` |
|
||||||
|
| `magento_version` | No | `magento/project-community-edition:2.4.8-p3` | Magento version to install (extension mode only) |
|
||||||
|
| `magento_repository` | No | `https://mirror.mage-os.org/` | Composer repository URL for Magento packages |
|
||||||
|
| `tools` | No | - | PHP tools to install globally (e.g., `composer:v2`) |
|
||||||
|
| `extensions` | No | - | Additional PHP extensions to install |
|
||||||
|
| `coverage` | No | - | Code coverage driver (e.g., `xdebug`, `pcov`) |
|
||||||
|
| `working-directory` | No | `.` | Working directory for the action |
|
||||||
|
| `apply_fixes` | No | `false` | Apply Magento installation fixes (always applied in extension mode) |
|
||||||
|
| `composer_auth` | No | - | Composer authentication credentials JSON |
|
||||||
|
|
||||||
|
## Outputs
|
||||||
|
|
||||||
|
| Output | Description |
|
||||||
|
|--------|-------------|
|
||||||
|
| `path` | Absolute path to the Magento installation directory |
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
### Stores
|
### Testing an Extension
|
||||||
|
|
||||||
|
Use `mode: extension` when your repository contains a Magento module. The action creates a fresh Magento instance and you can then require your extension into it.
|
||||||
|
|
||||||
```yml
|
```yml
|
||||||
name: Setup Magento Store
|
name: Test Extension
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches: [main]
|
||||||
- main
|
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches: [main]
|
||||||
- main
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
setup-magento-store:
|
test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v6
|
||||||
- uses: ./setup-magento
|
|
||||||
with:
|
|
||||||
php-version: 8.1
|
|
||||||
tools: composer:v2
|
|
||||||
mode: store
|
|
||||||
working-directory: $GITHUB_WORKSPACE
|
|
||||||
|
|
||||||
- run: composer install
|
- uses: graycoreio/github-actions-magento/setup-magento@main
|
||||||
name: Composer install
|
id: setup-magento
|
||||||
shell: bash
|
with:
|
||||||
|
php-version: "8.3"
|
||||||
|
tools: composer:v2
|
||||||
|
mode: extension
|
||||||
|
magento_version: "magento/project-community-edition:2.4.8-p3"
|
||||||
|
|
||||||
|
- name: Add local repository
|
||||||
working-directory: ${{ steps.setup-magento.outputs.path }}
|
working-directory: ${{ steps.setup-magento.outputs.path }}
|
||||||
|
run: composer config repositories.local path $GITHUB_WORKSPACE
|
||||||
|
|
||||||
|
- name: Require extension
|
||||||
|
working-directory: ${{ steps.setup-magento.outputs.path }}
|
||||||
|
run: composer require vendor/my-extension "@dev"
|
||||||
|
env:
|
||||||
|
COMPOSER_AUTH: ${{ secrets.COMPOSER_AUTH }}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Extensions
|
### Testing a Magento Store
|
||||||
|
|
||||||
|
Use `mode: store` when your repository is a complete Magento project.
|
||||||
|
|
||||||
```yml
|
```yml
|
||||||
name: Setup Magento Store
|
name: Test Store
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches: [main]
|
||||||
- main
|
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches: [main]
|
||||||
- main
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
setup-magento-extension:
|
test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
- uses: ./setup-magento
|
- uses: graycoreio/github-actions-magento/setup-magento@main
|
||||||
with:
|
id: setup-magento
|
||||||
php-version: 8.1
|
with:
|
||||||
tools: composer:v2
|
php-version: "8.3"
|
||||||
mode: extension
|
tools: composer:v2
|
||||||
magento_version: 2.4.5-p1
|
mode: store
|
||||||
|
|
||||||
- run: composer config repositories.local path $GITHUB_WORKSPACE
|
- name: Install dependencies
|
||||||
name: Add Github Repo for Testing
|
working-directory: ${{ steps.setup-magento.outputs.path }}
|
||||||
working-directory: ${{ steps.setup-magento.outputs.path }}
|
run: composer install
|
||||||
shell: bash
|
env:
|
||||||
|
COMPOSER_AUTH: ${{ secrets.COMPOSER_AUTH }}
|
||||||
- run: composer require my/package "@dev"
|
|
||||||
name: Attempt install
|
|
||||||
working-directory: ${{ steps.setup-magento.outputs.path }}
|
|
||||||
shell: bash
|
|
||||||
env:
|
|
||||||
COMPOSER_AUTH: ${{ secrets.composer_auth }}
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- The action uses [shivammathur/setup-php](https://github.com/shivammathur/setup-php) for PHP installation
|
||||||
|
- By default, Magento packages are fetched from the [Mage-OS mirror](https://mirror.mage-os.org/) which doesn't require authentication
|
||||||
|
- For Adobe Commerce or private packages, provide `composer_auth` with your credentials
|
||||||
@@ -5,7 +5,7 @@ description: "This action sets up a Magento instance for further actions like ru
|
|||||||
inputs:
|
inputs:
|
||||||
php-version:
|
php-version:
|
||||||
description: "Setup PHP version."
|
description: "Setup PHP version."
|
||||||
default: "8.1"
|
default: "8.4"
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
tools:
|
tools:
|
||||||
@@ -27,7 +27,7 @@ inputs:
|
|||||||
|
|
||||||
magento_version:
|
magento_version:
|
||||||
required: false
|
required: false
|
||||||
default: '~2.4.5'
|
default: 'magento/project-community-edition:2.4.8-p3'
|
||||||
description: "The version of Magento to use. This is only relevant if you are testing an extension."
|
description: "The version of Magento to use. This is only relevant if you are testing an extension."
|
||||||
|
|
||||||
apply_fixes:
|
apply_fixes:
|
||||||
@@ -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 }}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ See the [action.yml](./action.yml)
|
|||||||
- `currently-supported` - The currently supported Magento Open Source versions by Adobe.
|
- `currently-supported` - The currently supported Magento Open Source versions by Adobe.
|
||||||
- `latest` - The latest version of Magento only.
|
- `latest` - The latest version of Magento only.
|
||||||
- `custom` - A custom subset of the versions, as specified by you. Requires `custom_versions` sibling key.
|
- `custom` - A custom subset of the versions, as specified by you. Requires `custom_versions` sibling key.
|
||||||
|
- `usable` - All versions of Magento, minus any that can no longer be installed or used under normal circumstances.
|
||||||
- `nightly` - The nightly version of Magento (only available via `https://upstream-nightly.mage-os.org`)
|
- `nightly` - The nightly version of Magento (only available via `https://upstream-nightly.mage-os.org`)
|
||||||
- `all` - All versions of Magento (including patched/unpatched versions).
|
- `all` - All versions of Magento (including patched/unpatched versions).
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ description: "A Github Action that computes the Github Actions matrix for the ch
|
|||||||
inputs:
|
inputs:
|
||||||
kind:
|
kind:
|
||||||
required: false
|
required: false
|
||||||
description: "The kind of versions you want to return. Allowed values are `currently-supported`, `latest`, `custom`, `nightly`, `recent` and `all`"
|
description: "The kind of versions you want to return. Allowed values are `currently-supported`, `latest`, `custom`, `usable`, `nightly`, `recent` and `all`"
|
||||||
default: "currently-supported"
|
default: "currently-supported"
|
||||||
project:
|
project:
|
||||||
required: false
|
required: false
|
||||||
@@ -22,13 +22,17 @@ inputs:
|
|||||||
default: "2y"
|
default: "2y"
|
||||||
description: "The time frame (from today). Only used in `recent` kind. String that defines a time duration using a combination of years (y), months (m), and days (d). Each unit is optional and can appear in any order, separated by spaces. For example `2y 2m 2d`. "
|
description: "The time frame (from today). Only used in `recent` kind. String that defines a time duration using a combination of years (y), months (m), and days (d). Each unit is optional and can appear in any order, separated by spaces. For example `2y 2m 2d`. "
|
||||||
|
|
||||||
|
include_services:
|
||||||
|
required: false
|
||||||
|
default: "true"
|
||||||
|
description: "Whether to include a `services` key in each matrix entry with GitHub Actions service configurations."
|
||||||
|
|
||||||
outputs:
|
outputs:
|
||||||
matrix:
|
matrix:
|
||||||
description: "The Github Actions matrix of software technologies required to run Magento."
|
description: "The Github Actions matrix of software technologies required to run Magento."
|
||||||
value: ${{ steps.generate.outputs.matrix }}
|
|
||||||
|
|
||||||
runs:
|
runs:
|
||||||
using: "node16"
|
using: "node24"
|
||||||
main: dist/index.js
|
main: dist/index.js
|
||||||
|
|
||||||
branding:
|
branding:
|
||||||
|
|||||||
Vendored
+67
-6
File diff suppressed because one or more lines are too long
@@ -11,12 +11,12 @@
|
|||||||
"author": "",
|
"author": "",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": "^1.10.1",
|
"@actions/core": "0.0.0-PLACEHOLDER",
|
||||||
"@actions/github": "^6.0.0"
|
"@actions/github": "0.0.0-PLACEHOLDER"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "^29.5.12",
|
"@types/jest": "0.0.0-PLACEHOLDER",
|
||||||
"jest": "^29.7.0",
|
"jest": "0.0.0-PLACEHOLDER",
|
||||||
"ts-jest": "^29.2.3"
|
"ts-jest": "0.0.0-PLACEHOLDER"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import * as core from '@actions/core';
|
|||||||
import { validateKind } from './kind/validate-kinds';
|
import { validateKind } from './kind/validate-kinds';
|
||||||
import { getMatrixForKind } from './matrix/get-matrix-for-kind';
|
import { getMatrixForKind } from './matrix/get-matrix-for-kind';
|
||||||
import { validateProject } from "./project/validate-projects";
|
import { validateProject } from "./project/validate-projects";
|
||||||
|
import { buildServicesForEntry } from "./services/build-services";
|
||||||
|
|
||||||
|
|
||||||
export async function run(): Promise<void> {
|
export async function run(): Promise<void> {
|
||||||
@@ -10,12 +11,25 @@ export async function run(): Promise<void> {
|
|||||||
const customVersions = core.getInput("custom_versions");
|
const customVersions = core.getInput("custom_versions");
|
||||||
const project = core.getInput("project");
|
const project = core.getInput("project");
|
||||||
const recent_time_frame = core.getInput("recent_time_frame");
|
const recent_time_frame = core.getInput("recent_time_frame");
|
||||||
|
const include_services = core.getInput("include_services") === "true";
|
||||||
|
|
||||||
validateProject(<any>project)
|
validateProject(<any>project)
|
||||||
|
|
||||||
validateKind(<any>kind, customVersions ? customVersions.split(',') : undefined);
|
validateKind(<any>kind, customVersions ? customVersions.split(',') : undefined);
|
||||||
|
|
||||||
core.setOutput('matrix', getMatrixForKind(kind, project, customVersions, recent_time_frame));
|
let matrix = getMatrixForKind(kind, project, customVersions, recent_time_frame);
|
||||||
|
|
||||||
|
if (include_services) {
|
||||||
|
matrix = {
|
||||||
|
magento: matrix.magento,
|
||||||
|
include: matrix.include.map((entry) => ({
|
||||||
|
...entry,
|
||||||
|
services: buildServicesForEntry(entry)
|
||||||
|
}))
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
core.setOutput('matrix', matrix);
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
core.setFailed(error.message);
|
core.setFailed(error.message);
|
||||||
|
|||||||
@@ -44,38 +44,51 @@ describe('getCurrentlySupportedVersions for magento-open-source', () => {
|
|||||||
'magento/project-community-edition:2.4.6-p8',
|
'magento/project-community-edition:2.4.6-p8',
|
||||||
'magento/project-community-edition:2.4.7-p3',
|
'magento/project-community-edition:2.4.7-p3',
|
||||||
]],
|
]],
|
||||||
['2025-08-08T00:00:00Z', 'Day Before v2.4.5 EoL', [
|
['2025-06-09T00:00:00Z', 'Day before new patch releases', [
|
||||||
'magento/project-community-edition:2.4.5-p12',
|
'magento/project-community-edition:2.4.5-p12',
|
||||||
'magento/project-community-edition:2.4.6-p10',
|
'magento/project-community-edition:2.4.6-p10',
|
||||||
'magento/project-community-edition:2.4.7-p5',
|
'magento/project-community-edition:2.4.7-p5',
|
||||||
'magento/project-community-edition:2.4.8',
|
'magento/project-community-edition:2.4.8',
|
||||||
]],
|
]],
|
||||||
['2025-08-09T00:00:00Z', 'Day of v2.4.5 EoL', [
|
['2025-06-10T00:00:01Z', 'Day of new patch releases', [
|
||||||
'magento/project-community-edition:2.4.5-p12',
|
'magento/project-community-edition:2.4.5-p13',
|
||||||
'magento/project-community-edition:2.4.6-p10',
|
'magento/project-community-edition:2.4.6-p11',
|
||||||
'magento/project-community-edition:2.4.7-p5',
|
'magento/project-community-edition:2.4.7-p6',
|
||||||
'magento/project-community-edition:2.4.8',
|
'magento/project-community-edition:2.4.8-p1',
|
||||||
]],
|
]],
|
||||||
['2025-08-10T00:00:00Z', 'Day after v2.4.5 EoL', [
|
['2025-08-11T00:00:00Z', 'Day Before v2.4.5 EoL', [
|
||||||
'magento/project-community-edition:2.4.6-p10',
|
'magento/project-community-edition:2.4.5-p13',
|
||||||
'magento/project-community-edition:2.4.7-p5',
|
'magento/project-community-edition:2.4.6-p11',
|
||||||
'magento/project-community-edition:2.4.8',
|
'magento/project-community-edition:2.4.7-p6',
|
||||||
|
'magento/project-community-edition:2.4.8-p1',
|
||||||
|
]],
|
||||||
|
['2025-08-12T00:00:00Z', 'Day of v2.4.5 EoL', [
|
||||||
|
'magento/project-community-edition:2.4.5-p13',
|
||||||
|
'magento/project-community-edition:2.4.6-p11',
|
||||||
|
'magento/project-community-edition:2.4.7-p6',
|
||||||
|
'magento/project-community-edition:2.4.8-p1',
|
||||||
|
]],
|
||||||
|
['2025-08-14T00:00:00Z', 'Day after August 2025 patch release', [
|
||||||
|
'magento/project-community-edition:2.4.6-p12',
|
||||||
|
'magento/project-community-edition:2.4.7-p7',
|
||||||
|
'magento/project-community-edition:2.4.8-p2',
|
||||||
]],
|
]],
|
||||||
['2025-12-31T00:00:00Z', 'End of 2025', [
|
['2025-12-31T00:00:00Z', 'End of 2025', [
|
||||||
'magento/project-community-edition:2.4.6-p10',
|
'magento/project-community-edition:2.4.6-p13',
|
||||||
'magento/project-community-edition:2.4.7-p5',
|
'magento/project-community-edition:2.4.7-p8',
|
||||||
'magento/project-community-edition:2.4.8',
|
'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-p5',
|
'magento/project-community-edition:2.4.6-p14',
|
||||||
'magento/project-community-edition:2.4.8',
|
'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-p5',
|
'magento/project-community-edition:2.4.7-p9',
|
||||||
'magento/project-community-edition:2.4.8',
|
'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',
|
'magento/project-community-edition:2.4.8-p4',
|
||||||
]],
|
]],
|
||||||
])(
|
])(
|
||||||
'supportedVersions for %s',
|
'supportedVersions for %s',
|
||||||
@@ -110,6 +123,15 @@ describe('getCurrentlySupportedVersions for mage-os', () => {
|
|||||||
['2024-07-18T00:00:01Z', 'Release of 1.0.2', [
|
['2024-07-18T00:00:01Z', 'Release of 1.0.2', [
|
||||||
'mage-os/project-community-edition:1.0.2',
|
'mage-os/project-community-edition:1.0.2',
|
||||||
]],
|
]],
|
||||||
|
['2025-04-22T00:00:01Z', 'Release of 1.1.1', [
|
||||||
|
'mage-os/project-community-edition:1.1.1',
|
||||||
|
]],
|
||||||
|
['2025-08-13T00:00:01Z', 'Release of 1.3.0', [
|
||||||
|
'mage-os/project-community-edition:1.3.0',
|
||||||
|
]],
|
||||||
|
['2025-09-09T00:00:01Z', 'Release of 1.3.1', [
|
||||||
|
'mage-os/project-community-edition:1.3.1',
|
||||||
|
]],
|
||||||
])(
|
])(
|
||||||
'supportedVersions for %s',
|
'supportedVersions for %s',
|
||||||
(date, description ,result) => {
|
(date, description ,result) => {
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
import { getUsableVersions } from "./get-usable";
|
||||||
|
import { Project } from "../project/projects";
|
||||||
|
import { getIndividualVersionsForProject } from "../versions/get-versions-for-project";
|
||||||
|
|
||||||
|
// Mock the dependencies
|
||||||
|
jest.mock('../versions/get-versions-for-project');
|
||||||
|
const mockGetVersions = getIndividualVersionsForProject as jest.Mock;
|
||||||
|
|
||||||
|
describe('getUsableVersions for magento-open-source', () => {
|
||||||
|
const project: Project = "magento-open-source";
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
mockGetVersions.mockReset();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return an array of versions', () => {
|
||||||
|
mockGetVersions.mockReturnValue({
|
||||||
|
'magento/project-community-edition:2.4.6': { composer: '2.2.0' }
|
||||||
|
});
|
||||||
|
expect(Array.isArray(getUsableVersions(project))).toBe(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should filter out versions with composer < 2.0.0', () => {
|
||||||
|
mockGetVersions.mockReturnValue({
|
||||||
|
'magento/project-community-edition:2.4.5': { composer: '1.9.0' },
|
||||||
|
'magento/project-community-edition:2.4.6': { composer: '2.2.0' }
|
||||||
|
});
|
||||||
|
|
||||||
|
const versions = getUsableVersions(project);
|
||||||
|
expect(versions).not.toContain('magento/project-community-edition:2.4.5');
|
||||||
|
expect(versions).toContain('magento/project-community-edition:2.4.6');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should handle composer version equal to 2.0.0', () => {
|
||||||
|
mockGetVersions.mockReturnValue({
|
||||||
|
'magento/project-community-edition:2.4.6': { composer: '2.0.0' }
|
||||||
|
});
|
||||||
|
|
||||||
|
const versions = getUsableVersions(project);
|
||||||
|
expect(versions).toContain('magento/project-community-edition:2.4.6');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should handle numeric composer versions', () => {
|
||||||
|
mockGetVersions.mockReturnValue({
|
||||||
|
'magento/project-community-edition:2.3.7-p3': { composer: 1 },
|
||||||
|
'magento/project-community-edition:2.4.6': { composer: 2 }
|
||||||
|
});
|
||||||
|
|
||||||
|
const versions = getUsableVersions(project);
|
||||||
|
expect(versions).not.toContain('magento/project-community-edition:2.3.7-p3');
|
||||||
|
expect(versions).toContain('magento/project-community-edition:2.4.6');
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
import { PackageMatrixVersion } from '../matrix/matrix-type';
|
||||||
|
import { getIndividualVersionsForProject } from "../versions/get-versions-for-project";
|
||||||
|
import semver from 'semver';
|
||||||
|
|
||||||
|
export const getUsableVersions = (project: string): string[] => {
|
||||||
|
const allVersions = getIndividualVersionsForProject(project)
|
||||||
|
return Object.entries(<Record<string,PackageMatrixVersion>>allVersions)
|
||||||
|
.filter(([key, value]) => {
|
||||||
|
/**
|
||||||
|
* Filter out any versions that are not 'usable', and cannot be successfully installed
|
||||||
|
* anymore for modern systems or other reasons outside our control.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Packagist retired support for Composer 1 on 2025-09-01.
|
||||||
|
const composerVersion = semver.coerce(value.composer.toString());
|
||||||
|
if (composerVersion && semver.lt(composerVersion, '2.0.0')) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
})
|
||||||
|
.map(([key, value]) => key);
|
||||||
|
}
|
||||||
@@ -5,6 +5,7 @@ export const KNOWN_KINDS = {
|
|||||||
'currently-supported': true,
|
'currently-supported': true,
|
||||||
'latest': true,
|
'latest': true,
|
||||||
'custom': true,
|
'custom': true,
|
||||||
|
'usable': true,
|
||||||
'nightly': true,
|
'nightly': true,
|
||||||
'recent': true,
|
'recent': true,
|
||||||
'all': true,
|
'all': true,
|
||||||
|
|||||||
@@ -53,15 +53,19 @@ describe('recent for magento-open-source', () => {
|
|||||||
"magento/project-community-edition:2.4.5-p10",
|
"magento/project-community-edition:2.4.5-p10",
|
||||||
"magento/project-community-edition:2.4.5-p11",
|
"magento/project-community-edition:2.4.5-p11",
|
||||||
"magento/project-community-edition:2.4.5-p12",
|
"magento/project-community-edition:2.4.5-p12",
|
||||||
|
"magento/project-community-edition:2.4.5-p13",
|
||||||
"magento/project-community-edition:2.4.6-p7",
|
"magento/project-community-edition:2.4.6-p7",
|
||||||
"magento/project-community-edition:2.4.6-p8",
|
"magento/project-community-edition:2.4.6-p8",
|
||||||
"magento/project-community-edition:2.4.6-p9",
|
"magento/project-community-edition:2.4.6-p9",
|
||||||
"magento/project-community-edition:2.4.6-p10",
|
"magento/project-community-edition:2.4.6-p10",
|
||||||
|
"magento/project-community-edition:2.4.6-p11",
|
||||||
"magento/project-community-edition:2.4.7-p2",
|
"magento/project-community-edition:2.4.7-p2",
|
||||||
"magento/project-community-edition:2.4.7-p3",
|
"magento/project-community-edition:2.4.7-p3",
|
||||||
"magento/project-community-edition:2.4.7-p4",
|
"magento/project-community-edition:2.4.7-p4",
|
||||||
"magento/project-community-edition:2.4.7-p5",
|
"magento/project-community-edition:2.4.7-p5",
|
||||||
|
"magento/project-community-edition:2.4.7-p6",
|
||||||
"magento/project-community-edition:2.4.8",
|
"magento/project-community-edition:2.4.8",
|
||||||
|
"magento/project-community-edition:2.4.8-p1"
|
||||||
]],
|
]],
|
||||||
])(
|
])(
|
||||||
'recent for %s',
|
'recent 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);
|
||||||
|
|
||||||
@@ -47,6 +54,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 `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);
|
||||||
|
|
||||||
@@ -84,7 +105,7 @@ describe('getMatrixForKind for magento-open-source', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('returns a matrix for valid `custom`', () => {
|
it('returns a matrix for valid `custom`', () => {
|
||||||
const result = getMatrixForKind("custom", project, "magento/project-community-edition:2.3.7-p3");
|
const result = getMatrixForKind("custom", project, "magento/project-community-edition:2.4.2");
|
||||||
|
|
||||||
expect(result.magento).toBeDefined();
|
expect(result.magento).toBeDefined();
|
||||||
expect(result.include).toBeDefined();
|
expect(result.include).toBeDefined();
|
||||||
@@ -97,8 +118,15 @@ 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.3.7-p3,magento/project-community-edition:2.4.0");
|
const result = getMatrixForKind("custom", project, "magento/project-community-edition:2.4.2,magento/project-community-edition:2.4.3");
|
||||||
|
|
||||||
expect(result.magento).toBeDefined();
|
expect(result.magento).toBeDefined();
|
||||||
expect(result.include).toBeDefined();
|
expect(result.include).toBeDefined();
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import latestJson from '../kind/special-versions/latest.json';
|
|||||||
import nightlyJson from '../kind/special-versions/nightly.json';
|
import nightlyJson from '../kind/special-versions/nightly.json';
|
||||||
import { getDayBefore } from '../nightly/get-day-before';
|
import { getDayBefore } from '../nightly/get-day-before';
|
||||||
import { getCurrentlySupportedVersions } from "../kind/get-currently-supported";
|
import { getCurrentlySupportedVersions } from "../kind/get-currently-supported";
|
||||||
|
import { getUsableVersions } from "../kind/get-usable";
|
||||||
import { amendMatrixForNext } from "../nightly/amend-matrix-for-next";
|
import { amendMatrixForNext } from "../nightly/amend-matrix-for-next";
|
||||||
import { getRecentVersions } from "../kind/recent";
|
import { getRecentVersions } from "../kind/recent";
|
||||||
|
|
||||||
@@ -14,6 +15,8 @@ export const getMatrixForKind = (kind: string, project: string, versions = "", r
|
|||||||
return getMatrixForVersions(project, latestJson[project]);
|
return getMatrixForVersions(project, latestJson[project]);
|
||||||
case 'currently-supported':
|
case 'currently-supported':
|
||||||
return getMatrixForVersions(project, getCurrentlySupportedVersions(project, new Date()));
|
return getMatrixForVersions(project, getCurrentlySupportedVersions(project, new Date()));
|
||||||
|
case 'usable':
|
||||||
|
return getMatrixForVersions(project, getUsableVersions(project));
|
||||||
case 'nightly':
|
case 'nightly':
|
||||||
return amendMatrixForNext(getMatrixForVersions(project, nightlyJson[project]), 'https://upstream-nightly.mage-os.org', getDayBefore());
|
return amendMatrixForNext(getMatrixForVersions(project, nightlyJson[project]), 'https://upstream-nightly.mage-os.org', getDayBefore());
|
||||||
case 'all':
|
case 'all':
|
||||||
|
|||||||
@@ -1,16 +1,30 @@
|
|||||||
|
export interface ServiceConfig {
|
||||||
|
image: string;
|
||||||
|
env?: Record<string, string>;
|
||||||
|
ports?: string[];
|
||||||
|
options?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Services {
|
||||||
|
[serviceName: string]: ServiceConfig;
|
||||||
|
}
|
||||||
|
|
||||||
export interface PackageMatrixVersion {
|
export interface PackageMatrixVersion {
|
||||||
magento: string,
|
magento: string,
|
||||||
php: string | number,
|
php: string | number,
|
||||||
composer: string | number,
|
composer: string | number,
|
||||||
mysql: string,
|
mysql: string,
|
||||||
elasticsearch: string,
|
elasticsearch: string,
|
||||||
|
opensearch: string,
|
||||||
rabbitmq: string,
|
rabbitmq: string,
|
||||||
redis: string,
|
redis: string,
|
||||||
varnish: string,
|
varnish: string,
|
||||||
|
valkey: string,
|
||||||
nginx: string,
|
nginx: string,
|
||||||
os: string,
|
os: string,
|
||||||
release: string,
|
release: string,
|
||||||
eol: string
|
eol: string,
|
||||||
|
services?: Services
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GithubActionsMatrix {
|
export interface GithubActionsMatrix {
|
||||||
|
|||||||
@@ -12,8 +12,10 @@ describe('amendMatrixForNext', () => {
|
|||||||
"composer": "2",
|
"composer": "2",
|
||||||
"mysql": "mysql:8.0",
|
"mysql": "mysql:8.0",
|
||||||
"elasticsearch": "elasticsearch:8.5.3",
|
"elasticsearch": "elasticsearch:8.5.3",
|
||||||
|
"opensearch": "",
|
||||||
"rabbitmq": "rabbitmq:3.11-management",
|
"rabbitmq": "rabbitmq:3.11-management",
|
||||||
"redis": "redis:7.0",
|
"redis": "redis:7.0",
|
||||||
|
"valkey": "",
|
||||||
"varnish": "varnish:7.3",
|
"varnish": "varnish:7.3",
|
||||||
"nginx": "nginx:1.22",
|
"nginx": "nginx:1.22",
|
||||||
"os": "ubuntu-latest",
|
"os": "ubuntu-latest",
|
||||||
@@ -35,8 +37,10 @@ describe('amendMatrixForNext', () => {
|
|||||||
"composer": "2",
|
"composer": "2",
|
||||||
"mysql": "mysql:8.0",
|
"mysql": "mysql:8.0",
|
||||||
"elasticsearch": "elasticsearch:8.5.3",
|
"elasticsearch": "elasticsearch:8.5.3",
|
||||||
|
"opensearch": "",
|
||||||
"rabbitmq": "rabbitmq:3.11-management",
|
"rabbitmq": "rabbitmq:3.11-management",
|
||||||
"redis": "redis:7.0",
|
"redis": "redis:7.0",
|
||||||
|
"valkey": "",
|
||||||
"varnish": "varnish:7.3",
|
"varnish": "varnish:7.3",
|
||||||
"nginx": "nginx:1.22",
|
"nginx": "nginx:1.22",
|
||||||
"os": "ubuntu-latest",
|
"os": "ubuntu-latest",
|
||||||
@@ -60,8 +64,10 @@ describe('amendMatrixForNext', () => {
|
|||||||
"composer": "2",
|
"composer": "2",
|
||||||
"mysql": "mysql:8.0",
|
"mysql": "mysql:8.0",
|
||||||
"elasticsearch": "elasticsearch:8.5.3",
|
"elasticsearch": "elasticsearch:8.5.3",
|
||||||
|
"opensearch": "",
|
||||||
"rabbitmq": "rabbitmq:3.11-management",
|
"rabbitmq": "rabbitmq:3.11-management",
|
||||||
"redis": "redis:7.0",
|
"redis": "redis:7.0",
|
||||||
|
"valkey": "",
|
||||||
"varnish": "varnish:7.3",
|
"varnish": "varnish:7.3",
|
||||||
"nginx": "nginx:1.22",
|
"nginx": "nginx:1.22",
|
||||||
"os": "ubuntu-latest",
|
"os": "ubuntu-latest",
|
||||||
@@ -83,8 +89,10 @@ describe('amendMatrixForNext', () => {
|
|||||||
"composer": "2",
|
"composer": "2",
|
||||||
"mysql": "mysql:8.0",
|
"mysql": "mysql:8.0",
|
||||||
"elasticsearch": "elasticsearch:8.5.3",
|
"elasticsearch": "elasticsearch:8.5.3",
|
||||||
|
"opensearch": "",
|
||||||
"rabbitmq": "rabbitmq:3.11-management",
|
"rabbitmq": "rabbitmq:3.11-management",
|
||||||
"redis": "redis:7.0",
|
"redis": "redis:7.0",
|
||||||
|
"valkey": "",
|
||||||
"varnish": "varnish:7.3",
|
"varnish": "varnish:7.3",
|
||||||
"nginx": "nginx:1.22",
|
"nginx": "nginx:1.22",
|
||||||
"os": "ubuntu-latest",
|
"os": "ubuntu-latest",
|
||||||
@@ -108,8 +116,10 @@ describe('amendMatrixForNext', () => {
|
|||||||
"composer": "2",
|
"composer": "2",
|
||||||
"mysql": "mysql:8.0",
|
"mysql": "mysql:8.0",
|
||||||
"elasticsearch": "elasticsearch:8.5.3",
|
"elasticsearch": "elasticsearch:8.5.3",
|
||||||
|
"opensearch": "",
|
||||||
"rabbitmq": "rabbitmq:3.11-management",
|
"rabbitmq": "rabbitmq:3.11-management",
|
||||||
"redis": "redis:7.0",
|
"redis": "redis:7.0",
|
||||||
|
"valkey": "",
|
||||||
"varnish": "varnish:7.3",
|
"varnish": "varnish:7.3",
|
||||||
"nginx": "nginx:1.22",
|
"nginx": "nginx:1.22",
|
||||||
"os": "ubuntu-latest",
|
"os": "ubuntu-latest",
|
||||||
@@ -122,8 +132,10 @@ describe('amendMatrixForNext', () => {
|
|||||||
"composer": "2",
|
"composer": "2",
|
||||||
"mysql": "mysql:8.0",
|
"mysql": "mysql:8.0",
|
||||||
"elasticsearch": "elasticsearch:8.5.3",
|
"elasticsearch": "elasticsearch:8.5.3",
|
||||||
|
"opensearch": "",
|
||||||
"rabbitmq": "rabbitmq:3.11-management",
|
"rabbitmq": "rabbitmq:3.11-management",
|
||||||
"redis": "redis:7.0",
|
"redis": "redis:7.0",
|
||||||
|
"valkey": "",
|
||||||
"varnish": "varnish:7.3",
|
"varnish": "varnish:7.3",
|
||||||
"nginx": "nginx:1.22",
|
"nginx": "nginx:1.22",
|
||||||
"os": "ubuntu-latest",
|
"os": "ubuntu-latest",
|
||||||
@@ -145,8 +157,10 @@ describe('amendMatrixForNext', () => {
|
|||||||
"composer": "2",
|
"composer": "2",
|
||||||
"mysql": "mysql:8.0",
|
"mysql": "mysql:8.0",
|
||||||
"elasticsearch": "elasticsearch:8.5.3",
|
"elasticsearch": "elasticsearch:8.5.3",
|
||||||
|
"opensearch": "",
|
||||||
"rabbitmq": "rabbitmq:3.11-management",
|
"rabbitmq": "rabbitmq:3.11-management",
|
||||||
"redis": "redis:7.0",
|
"redis": "redis:7.0",
|
||||||
|
"valkey": "",
|
||||||
"varnish": "varnish:7.3",
|
"varnish": "varnish:7.3",
|
||||||
"nginx": "nginx:1.22",
|
"nginx": "nginx:1.22",
|
||||||
"os": "ubuntu-latest",
|
"os": "ubuntu-latest",
|
||||||
@@ -159,8 +173,10 @@ describe('amendMatrixForNext', () => {
|
|||||||
"composer": "2",
|
"composer": "2",
|
||||||
"mysql": "mysql:8.0",
|
"mysql": "mysql:8.0",
|
||||||
"elasticsearch": "elasticsearch:8.5.3",
|
"elasticsearch": "elasticsearch:8.5.3",
|
||||||
|
"opensearch": "",
|
||||||
"rabbitmq": "rabbitmq:3.11-management",
|
"rabbitmq": "rabbitmq:3.11-management",
|
||||||
"redis": "redis:7.0",
|
"redis": "redis:7.0",
|
||||||
|
"valkey": "",
|
||||||
"varnish": "varnish:7.3",
|
"varnish": "varnish:7.3",
|
||||||
"nginx": "nginx:1.22",
|
"nginx": "nginx:1.22",
|
||||||
"os": "ubuntu-latest",
|
"os": "ubuntu-latest",
|
||||||
@@ -184,8 +200,10 @@ describe('amendMatrixForNext', () => {
|
|||||||
"composer": "2",
|
"composer": "2",
|
||||||
"mysql": "mysql:8.0",
|
"mysql": "mysql:8.0",
|
||||||
"elasticsearch": "elasticsearch:8.5.3",
|
"elasticsearch": "elasticsearch:8.5.3",
|
||||||
|
"opensearch": "",
|
||||||
"rabbitmq": "rabbitmq:3.11-management",
|
"rabbitmq": "rabbitmq:3.11-management",
|
||||||
"redis": "redis:7.0",
|
"redis": "redis:7.0",
|
||||||
|
"valkey": "",
|
||||||
"varnish": "varnish:7.3",
|
"varnish": "varnish:7.3",
|
||||||
"nginx": "nginx:1.22",
|
"nginx": "nginx:1.22",
|
||||||
"os": "ubuntu-latest",
|
"os": "ubuntu-latest",
|
||||||
@@ -207,8 +225,10 @@ describe('amendMatrixForNext', () => {
|
|||||||
"composer": "2",
|
"composer": "2",
|
||||||
"mysql": "mysql:8.0",
|
"mysql": "mysql:8.0",
|
||||||
"elasticsearch": "elasticsearch:8.5.3",
|
"elasticsearch": "elasticsearch:8.5.3",
|
||||||
|
"opensearch": "",
|
||||||
"rabbitmq": "rabbitmq:3.11-management",
|
"rabbitmq": "rabbitmq:3.11-management",
|
||||||
"redis": "redis:7.0",
|
"redis": "redis:7.0",
|
||||||
|
"valkey": "",
|
||||||
"varnish": "varnish:7.3",
|
"varnish": "varnish:7.3",
|
||||||
"nginx": "nginx:1.22",
|
"nginx": "nginx:1.22",
|
||||||
"os": "ubuntu-latest",
|
"os": "ubuntu-latest",
|
||||||
|
|||||||
@@ -0,0 +1,248 @@
|
|||||||
|
import { buildServicesForEntry } from './build-services';
|
||||||
|
import { PackageMatrixVersion } from '../matrix/matrix-type';
|
||||||
|
|
||||||
|
const createTestEntry = (overrides: Partial<PackageMatrixVersion> = {}): PackageMatrixVersion => ({
|
||||||
|
magento: 'magento/project-community-edition:2.4.7',
|
||||||
|
php: '8.3',
|
||||||
|
composer: '2.7.4',
|
||||||
|
mysql: 'mysql:8.4',
|
||||||
|
elasticsearch: 'elasticsearch:8.11.4',
|
||||||
|
opensearch: 'opensearchproject/opensearch:2.19.1',
|
||||||
|
rabbitmq: 'rabbitmq:4.0-management',
|
||||||
|
redis: 'redis:7.2',
|
||||||
|
varnish: 'varnish:7.5',
|
||||||
|
valkey: 'valkey:8.0',
|
||||||
|
nginx: 'nginx:1.26',
|
||||||
|
os: 'ubuntu-latest',
|
||||||
|
release: '2024-04-09T00:00:00+0000',
|
||||||
|
eol: '2027-04-09T00:00:00+0000',
|
||||||
|
...overrides
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('buildServicesForEntry', () => {
|
||||||
|
describe('search engine selection', () => {
|
||||||
|
it('should prefer opensearch when both are available', () => {
|
||||||
|
const entry = createTestEntry();
|
||||||
|
const services = buildServicesForEntry(entry);
|
||||||
|
|
||||||
|
expect(services.opensearch).toBeDefined();
|
||||||
|
expect(services.opensearch.image).toBe('opensearchproject/opensearch:2.19.1');
|
||||||
|
expect(services.elasticsearch).toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should fall back to elasticsearch when opensearch is empty', () => {
|
||||||
|
const entry = createTestEntry({ opensearch: '' });
|
||||||
|
const services = buildServicesForEntry(entry);
|
||||||
|
|
||||||
|
expect(services.elasticsearch).toBeDefined();
|
||||||
|
expect(services.elasticsearch.image).toBe('elasticsearch:8.11.4');
|
||||||
|
expect(services.opensearch).toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not include search engine when neither is available', () => {
|
||||||
|
const entry = createTestEntry({ opensearch: '', elasticsearch: '' });
|
||||||
|
const services = buildServicesForEntry(entry);
|
||||||
|
|
||||||
|
expect(services.opensearch).toBeUndefined();
|
||||||
|
expect(services.elasticsearch).toBeUndefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('cache selection', () => {
|
||||||
|
it('should prefer valkey when both are available', () => {
|
||||||
|
const entry = createTestEntry();
|
||||||
|
const services = buildServicesForEntry(entry);
|
||||||
|
|
||||||
|
expect(services.valkey).toBeDefined();
|
||||||
|
expect(services.valkey.image).toBe('valkey:8.0');
|
||||||
|
expect(services.redis).toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should fall back to redis when valkey is empty', () => {
|
||||||
|
const entry = createTestEntry({ valkey: '' });
|
||||||
|
const services = buildServicesForEntry(entry);
|
||||||
|
|
||||||
|
expect(services.redis).toBeDefined();
|
||||||
|
expect(services.redis.image).toBe('redis:7.2');
|
||||||
|
expect(services.valkey).toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not include cache when neither is available', () => {
|
||||||
|
const entry = createTestEntry({ valkey: '', redis: '' });
|
||||||
|
const services = buildServicesForEntry(entry);
|
||||||
|
|
||||||
|
expect(services.valkey).toBeUndefined();
|
||||||
|
expect(services.redis).toBeUndefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('mysql configuration', () => {
|
||||||
|
it('should include mysql when available', () => {
|
||||||
|
const entry = createTestEntry();
|
||||||
|
const services = buildServicesForEntry(entry);
|
||||||
|
|
||||||
|
expect(services.mysql).toBeDefined();
|
||||||
|
expect(services.mysql.image).toBe('mysql:8.4');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not include mysql when empty', () => {
|
||||||
|
const entry = createTestEntry({ mysql: '' });
|
||||||
|
const services = buildServicesForEntry(entry);
|
||||||
|
|
||||||
|
expect(services.mysql).toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should include correct mysql env configuration', () => {
|
||||||
|
const entry = createTestEntry();
|
||||||
|
const services = buildServicesForEntry(entry);
|
||||||
|
|
||||||
|
expect(services.mysql.env).toEqual({
|
||||||
|
MYSQL_DATABASE: 'magento_integration_tests',
|
||||||
|
MYSQL_USER: 'user',
|
||||||
|
MYSQL_PASSWORD: 'password',
|
||||||
|
MYSQL_ROOT_PASSWORD: 'rootpassword'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should include correct mysql ports', () => {
|
||||||
|
const entry = createTestEntry();
|
||||||
|
const services = buildServicesForEntry(entry);
|
||||||
|
|
||||||
|
expect(services.mysql.ports).toEqual(['3306:3306']);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should include mysql health check options', () => {
|
||||||
|
const entry = createTestEntry();
|
||||||
|
const services = buildServicesForEntry(entry);
|
||||||
|
|
||||||
|
expect(services.mysql.options).toContain('--health-cmd');
|
||||||
|
expect(services.mysql.options).toContain('mysqladmin ping');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('rabbitmq configuration', () => {
|
||||||
|
it('should include rabbitmq when available', () => {
|
||||||
|
const entry = createTestEntry();
|
||||||
|
const services = buildServicesForEntry(entry);
|
||||||
|
|
||||||
|
expect(services.rabbitmq).toBeDefined();
|
||||||
|
expect(services.rabbitmq.image).toBe('rabbitmq:4.0-management');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not include rabbitmq when empty', () => {
|
||||||
|
const entry = createTestEntry({ rabbitmq: '' });
|
||||||
|
const services = buildServicesForEntry(entry);
|
||||||
|
|
||||||
|
expect(services.rabbitmq).toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should include correct rabbitmq env configuration', () => {
|
||||||
|
const entry = createTestEntry();
|
||||||
|
const services = buildServicesForEntry(entry);
|
||||||
|
|
||||||
|
expect(services.rabbitmq.env).toEqual({
|
||||||
|
RABBITMQ_DEFAULT_USER: 'guest',
|
||||||
|
RABBITMQ_DEFAULT_PASS: 'guest'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should include correct rabbitmq ports', () => {
|
||||||
|
const entry = createTestEntry();
|
||||||
|
const services = buildServicesForEntry(entry);
|
||||||
|
|
||||||
|
expect(services.rabbitmq.ports).toEqual(['5672:5672']);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('opensearch configuration', () => {
|
||||||
|
it('should include correct opensearch env configuration', () => {
|
||||||
|
const entry = createTestEntry();
|
||||||
|
const services = buildServicesForEntry(entry);
|
||||||
|
|
||||||
|
expect(services.opensearch.env).toEqual({
|
||||||
|
'discovery.type': 'single-node',
|
||||||
|
'DISABLE_INSTALL_DEMO_CONFIG': 'true',
|
||||||
|
'DISABLE_SECURITY_PLUGIN': 'true'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should include correct opensearch ports', () => {
|
||||||
|
const entry = createTestEntry();
|
||||||
|
const services = buildServicesForEntry(entry);
|
||||||
|
|
||||||
|
expect(services.opensearch.ports).toEqual(['9200:9200']);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should include opensearch health check options', () => {
|
||||||
|
const entry = createTestEntry();
|
||||||
|
const services = buildServicesForEntry(entry);
|
||||||
|
|
||||||
|
expect(services.opensearch.options).toContain('--health-cmd');
|
||||||
|
expect(services.opensearch.options).toContain('curl');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('elasticsearch configuration', () => {
|
||||||
|
it('should include correct elasticsearch env configuration', () => {
|
||||||
|
const entry = createTestEntry({ opensearch: '' });
|
||||||
|
const services = buildServicesForEntry(entry);
|
||||||
|
|
||||||
|
expect(services.elasticsearch.env).toEqual({
|
||||||
|
'discovery.type': 'single-node',
|
||||||
|
'xpack.security.enabled': 'false',
|
||||||
|
'xpack.security.http.ssl.enabled': 'false',
|
||||||
|
'xpack.security.transport.ssl.enabled': 'false'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should include correct elasticsearch ports', () => {
|
||||||
|
const entry = createTestEntry({ opensearch: '' });
|
||||||
|
const services = buildServicesForEntry(entry);
|
||||||
|
|
||||||
|
expect(services.elasticsearch.ports).toEqual(['9200:9200']);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('cache configuration', () => {
|
||||||
|
it('should include correct valkey ports', () => {
|
||||||
|
const entry = createTestEntry();
|
||||||
|
const services = buildServicesForEntry(entry);
|
||||||
|
|
||||||
|
expect(services.valkey.ports).toEqual(['6379:6379']);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should include correct redis ports', () => {
|
||||||
|
const entry = createTestEntry({ valkey: '' });
|
||||||
|
const services = buildServicesForEntry(entry);
|
||||||
|
|
||||||
|
expect(services.redis.ports).toEqual(['6379:6379']);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('complete service output', () => {
|
||||||
|
it('should build all services when all are available', () => {
|
||||||
|
const entry = createTestEntry();
|
||||||
|
const services = buildServicesForEntry(entry);
|
||||||
|
|
||||||
|
expect(Object.keys(services)).toHaveLength(4);
|
||||||
|
expect(services.mysql).toBeDefined();
|
||||||
|
expect(services.opensearch).toBeDefined();
|
||||||
|
expect(services.rabbitmq).toBeDefined();
|
||||||
|
expect(services.valkey).toBeDefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should handle entry with minimal services', () => {
|
||||||
|
const entry = createTestEntry({
|
||||||
|
mysql: '',
|
||||||
|
elasticsearch: '',
|
||||||
|
opensearch: '',
|
||||||
|
rabbitmq: '',
|
||||||
|
redis: '',
|
||||||
|
valkey: ''
|
||||||
|
});
|
||||||
|
const services = buildServicesForEntry(entry);
|
||||||
|
|
||||||
|
expect(Object.keys(services)).toHaveLength(0);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
import { PackageMatrixVersion, Services } from '../matrix/matrix-type';
|
||||||
|
import {
|
||||||
|
mysqlConfig,
|
||||||
|
elasticsearchConfig,
|
||||||
|
opensearchConfig,
|
||||||
|
rabbitmqConfig,
|
||||||
|
redisConfig,
|
||||||
|
valkeyConfig
|
||||||
|
} from './service-config';
|
||||||
|
|
||||||
|
interface SearchEngineChoice {
|
||||||
|
type: 'opensearch' | 'elasticsearch';
|
||||||
|
image: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface CacheChoice {
|
||||||
|
type: 'valkey' | 'redis';
|
||||||
|
image: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines which search engine to use for a matrix entry.
|
||||||
|
* Prefers opensearch over elasticsearch.
|
||||||
|
*/
|
||||||
|
function getSearchEngineChoice(entry: PackageMatrixVersion): SearchEngineChoice | null {
|
||||||
|
if (entry.opensearch && entry.opensearch.trim() !== '') {
|
||||||
|
return { type: 'opensearch', image: entry.opensearch };
|
||||||
|
}
|
||||||
|
if (entry.elasticsearch && entry.elasticsearch.trim() !== '') {
|
||||||
|
return { type: 'elasticsearch', image: entry.elasticsearch };
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines which cache to use for a matrix entry.
|
||||||
|
* Prefers valkey over redis.
|
||||||
|
*/
|
||||||
|
function getCacheChoice(entry: PackageMatrixVersion): CacheChoice | null {
|
||||||
|
if (entry.valkey && entry.valkey.trim() !== '') {
|
||||||
|
return { type: 'valkey', image: entry.valkey };
|
||||||
|
}
|
||||||
|
if (entry.redis && entry.redis.trim() !== '') {
|
||||||
|
return { type: 'redis', image: entry.redis };
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds the services object for a single matrix entry.
|
||||||
|
*/
|
||||||
|
export function buildServicesForEntry(entry: PackageMatrixVersion): Services {
|
||||||
|
const services: Services = {};
|
||||||
|
|
||||||
|
// MySQL is always included if present
|
||||||
|
if (entry.mysql && entry.mysql.trim() !== '') {
|
||||||
|
services.mysql = mysqlConfig.getConfig(entry.mysql);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Search engine: prefer opensearch over elasticsearch
|
||||||
|
const searchEngine = getSearchEngineChoice(entry);
|
||||||
|
if (searchEngine) {
|
||||||
|
if (searchEngine.type === 'opensearch') {
|
||||||
|
services.opensearch = opensearchConfig.getConfig(searchEngine.image);
|
||||||
|
} else {
|
||||||
|
services.elasticsearch = elasticsearchConfig.getConfig(searchEngine.image);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// RabbitMQ
|
||||||
|
if (entry.rabbitmq && entry.rabbitmq.trim() !== '') {
|
||||||
|
services.rabbitmq = rabbitmqConfig.getConfig(entry.rabbitmq);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cache: prefer valkey over redis
|
||||||
|
const cache = getCacheChoice(entry);
|
||||||
|
if (cache) {
|
||||||
|
if (cache.type === 'valkey') {
|
||||||
|
services.valkey = valkeyConfig.getConfig(cache.image);
|
||||||
|
} else {
|
||||||
|
services.redis = redisConfig.getConfig(cache.image);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return services;
|
||||||
|
}
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
import { ServiceConfig } from '../matrix/matrix-type';
|
||||||
|
|
||||||
|
export interface ServiceTemplate {
|
||||||
|
getConfig(image: string): ServiceConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const mysqlConfig: ServiceTemplate = {
|
||||||
|
getConfig(image: string): ServiceConfig {
|
||||||
|
return {
|
||||||
|
image,
|
||||||
|
env: {
|
||||||
|
MYSQL_DATABASE: 'magento_integration_tests',
|
||||||
|
MYSQL_USER: 'user',
|
||||||
|
MYSQL_PASSWORD: 'password',
|
||||||
|
MYSQL_ROOT_PASSWORD: 'rootpassword'
|
||||||
|
},
|
||||||
|
ports: ['3306:3306'],
|
||||||
|
options: '--health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3'
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export const elasticsearchConfig: ServiceTemplate = {
|
||||||
|
getConfig(image: string): ServiceConfig {
|
||||||
|
return {
|
||||||
|
image,
|
||||||
|
env: {
|
||||||
|
'discovery.type': 'single-node',
|
||||||
|
'xpack.security.enabled': 'false',
|
||||||
|
'xpack.security.http.ssl.enabled': 'false',
|
||||||
|
'xpack.security.transport.ssl.enabled': 'false'
|
||||||
|
},
|
||||||
|
ports: ['9200:9200'],
|
||||||
|
options: '--health-cmd "curl http://localhost:9200/_cluster/health" --health-interval 10s --health-timeout 5s --health-retries 10'
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export const opensearchConfig: ServiceTemplate = {
|
||||||
|
getConfig(image: string): ServiceConfig {
|
||||||
|
return {
|
||||||
|
image,
|
||||||
|
env: {
|
||||||
|
'discovery.type': 'single-node',
|
||||||
|
'DISABLE_INSTALL_DEMO_CONFIG': 'true',
|
||||||
|
'DISABLE_SECURITY_PLUGIN': 'true'
|
||||||
|
},
|
||||||
|
ports: ['9200:9200'],
|
||||||
|
options: '--health-cmd "curl http://localhost:9200/_cluster/health" --health-interval 10s --health-timeout 5s --health-retries 10'
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export const rabbitmqConfig: ServiceTemplate = {
|
||||||
|
getConfig(image: string): ServiceConfig {
|
||||||
|
return {
|
||||||
|
image,
|
||||||
|
env: {
|
||||||
|
RABBITMQ_DEFAULT_USER: 'guest',
|
||||||
|
RABBITMQ_DEFAULT_PASS: 'guest'
|
||||||
|
},
|
||||||
|
ports: ['5672:5672']
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export const redisConfig: ServiceTemplate = {
|
||||||
|
getConfig(image: string): ServiceConfig {
|
||||||
|
return {
|
||||||
|
image,
|
||||||
|
ports: ['6379:6379']
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export const valkeyConfig: ServiceTemplate = {
|
||||||
|
getConfig(image: string): ServiceConfig {
|
||||||
|
return {
|
||||||
|
image,
|
||||||
|
ports: ['6379:6379']
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -1,22 +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.1,
|
"php": 8.4,
|
||||||
"composer": "2.2.21",
|
"composer": "2.9.5",
|
||||||
"mysql": "mysql:8.0",
|
"mysql": "mysql:8.4",
|
||||||
"elasticsearch": "elasticsearch:8.5.3",
|
"opensearch": "opensearchproject/opensearch:3",
|
||||||
"rabbitmq": "rabbitmq:3.9-management",
|
"rabbitmq": "rabbitmq:4.1-management",
|
||||||
"redis": "redis:7.0",
|
"valkey": "valkey/valkey:8.0",
|
||||||
"varnish": "varnish:7.3",
|
"varnish": "varnish:7.7",
|
||||||
"nginx": "nginx:1.22",
|
"nginx": "nginx:1.28",
|
||||||
"os": "ubuntu-latest",
|
"os": "ubuntu-latest",
|
||||||
"release": "2023-10-10T00:00:00+0000",
|
"release": "2026-03-10T00:00:00+0000",
|
||||||
"eol": "2026-10-10T00: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,
|
||||||
|
"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": "2029-03-10T00:00:00+0000"
|
||||||
|
},
|
||||||
|
"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",
|
"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",
|
||||||
@@ -24,7 +38,91 @@
|
|||||||
"varnish": "varnish:7.5",
|
"varnish": "varnish:7.5",
|
||||||
"nginx": "nginx:1.26",
|
"nginx": "nginx:1.26",
|
||||||
"os": "ubuntu-latest",
|
"os": "ubuntu-latest",
|
||||||
"release": "2024-10-10T00:00:00+0000",
|
"release": "2023-10-10T00:00:00+0000",
|
||||||
"eol": "2026-10-10T00:00:00+0000"
|
"eol": "2025-04-07T00:00:00+0000"
|
||||||
|
},
|
||||||
|
"mage-os/project-community-edition:>=1.1 <1.2": {
|
||||||
|
"magento": "mage-os/project-community-edition:>=1.1 <1.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": "2025-04-15T00:00:00+0000",
|
||||||
|
"eol": "2025-06-16T00:00:00+0000"
|
||||||
|
},
|
||||||
|
"mage-os/project-community-edition:>=1.2 <1.3": {
|
||||||
|
"magento": "mage-os/project-community-edition:>=1.2 <1.3",
|
||||||
|
"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": "2025-06-17T00:00:00+0000",
|
||||||
|
"eol": "2025-08-12T00:00:00+0000"
|
||||||
|
},
|
||||||
|
"mage-os/project-community-edition:>=1.3 <1.4": {
|
||||||
|
"magento": "mage-os/project-community-edition:>=1.2 <1.3",
|
||||||
|
"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": "2025-08-13T00:00:00+0000",
|
||||||
|
"eol": "2025-10-16T00:00:00+0000"
|
||||||
|
},
|
||||||
|
"mage-os/project-community-edition:>=2.0 <2.1": {
|
||||||
|
"magento": "mage-os/project-community-edition:>=2.0 <2.1",
|
||||||
|
"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": "2025-10-16T00: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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"mage-os/project-community-edition:1.0.0": {
|
"mage-os/project-community-edition:1.0.0": {
|
||||||
"magento": "mage-os/project-community-edition:1.0.0",
|
"magento": "mage-os/project-community-edition:1.0.0",
|
||||||
|
"upstream": "2.4.6-p3",
|
||||||
"php": 8.1,
|
"php": 8.1,
|
||||||
"composer": "2.2.21",
|
"composer": "2.2.21",
|
||||||
"mysql": "mysql:8.0",
|
"mysql": "mysql:8.0",
|
||||||
@@ -15,6 +16,7 @@
|
|||||||
},
|
},
|
||||||
"mage-os/project-community-edition:1.0.1": {
|
"mage-os/project-community-edition:1.0.1": {
|
||||||
"magento": "mage-os/project-community-edition:1.0.1",
|
"magento": "mage-os/project-community-edition:1.0.1",
|
||||||
|
"upstream": "2.4.6-p3",
|
||||||
"php": 8.1,
|
"php": 8.1,
|
||||||
"composer": "2.2.21",
|
"composer": "2.2.21",
|
||||||
"mysql": "mysql:8.0",
|
"mysql": "mysql:8.0",
|
||||||
@@ -29,6 +31,7 @@
|
|||||||
},
|
},
|
||||||
"mage-os/project-community-edition:1.0.2": {
|
"mage-os/project-community-edition:1.0.2": {
|
||||||
"magento": "mage-os/project-community-edition:1.0.2",
|
"magento": "mage-os/project-community-edition:1.0.2",
|
||||||
|
"upstream": "2.4.7-p1",
|
||||||
"php": 8.3,
|
"php": 8.3,
|
||||||
"composer": "2.7.4",
|
"composer": "2.7.4",
|
||||||
"mysql": "mariadb:10.6",
|
"mysql": "mariadb:10.6",
|
||||||
@@ -43,6 +46,7 @@
|
|||||||
},
|
},
|
||||||
"mage-os/project-community-edition:1.0.3": {
|
"mage-os/project-community-edition:1.0.3": {
|
||||||
"magento": "mage-os/project-community-edition:1.0.3",
|
"magento": "mage-os/project-community-edition:1.0.3",
|
||||||
|
"upstream": "2.4.7-p1",
|
||||||
"php": 8.3,
|
"php": 8.3,
|
||||||
"composer": "2.7.4",
|
"composer": "2.7.4",
|
||||||
"mysql": "mariadb:10.6",
|
"mysql": "mariadb:10.6",
|
||||||
@@ -57,6 +61,7 @@
|
|||||||
},
|
},
|
||||||
"mage-os/project-community-edition:1.0.4": {
|
"mage-os/project-community-edition:1.0.4": {
|
||||||
"magento": "mage-os/project-community-edition:1.0.4",
|
"magento": "mage-os/project-community-edition:1.0.4",
|
||||||
|
"upstream": "2.4.7-p2",
|
||||||
"php": 8.3,
|
"php": 8.3,
|
||||||
"composer": "2.7.4",
|
"composer": "2.7.4",
|
||||||
"mysql": "mariadb:10.6",
|
"mysql": "mariadb:10.6",
|
||||||
@@ -71,6 +76,7 @@
|
|||||||
},
|
},
|
||||||
"mage-os/project-community-edition:1.0.5": {
|
"mage-os/project-community-edition:1.0.5": {
|
||||||
"magento": "mage-os/project-community-edition:1.0.5",
|
"magento": "mage-os/project-community-edition:1.0.5",
|
||||||
|
"upstream": "2.4.7-p3",
|
||||||
"php": 8.3,
|
"php": 8.3,
|
||||||
"composer": "2.7.4",
|
"composer": "2.7.4",
|
||||||
"mysql": "mariadb:10.6",
|
"mysql": "mariadb:10.6",
|
||||||
@@ -85,6 +91,7 @@
|
|||||||
},
|
},
|
||||||
"mage-os/project-community-edition:1.0.6": {
|
"mage-os/project-community-edition:1.0.6": {
|
||||||
"magento": "mage-os/project-community-edition:1.0.6",
|
"magento": "mage-os/project-community-edition:1.0.6",
|
||||||
|
"upstream": "2.4.7-p4",
|
||||||
"php": 8.3,
|
"php": 8.3,
|
||||||
"composer": "2.7.4",
|
"composer": "2.7.4",
|
||||||
"mysql": "mariadb:10.6",
|
"mysql": "mariadb:10.6",
|
||||||
@@ -95,6 +102,126 @@
|
|||||||
"nginx": "nginx:1.26",
|
"nginx": "nginx:1.26",
|
||||||
"os": "ubuntu-latest",
|
"os": "ubuntu-latest",
|
||||||
"release": "2025-02-12T00:00:00+0000",
|
"release": "2025-02-12T00:00:00+0000",
|
||||||
"eol": "2027-02-14T00:00:00+0000"
|
"eol": "2025-04-07T00:00:00+0000"
|
||||||
|
},
|
||||||
|
"mage-os/project-community-edition:1.1.0": {
|
||||||
|
"magento": "mage-os/project-community-edition:1.1.0",
|
||||||
|
"upstream": "2.4.8",
|
||||||
|
"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": "2025-04-15T00:00:00+0000",
|
||||||
|
"eol": "2025-04-21T00:00:00+0000"
|
||||||
|
},
|
||||||
|
"mage-os/project-community-edition:1.1.1": {
|
||||||
|
"magento": "mage-os/project-community-edition:1.1.1",
|
||||||
|
"upstream": "2.4.8",
|
||||||
|
"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": "2025-04-22T00:00:00+0000",
|
||||||
|
"eol": "2025-06-16T00:00:00+0000"
|
||||||
|
},
|
||||||
|
"mage-os/project-community-edition:1.2.0": {
|
||||||
|
"magento": "mage-os/project-community-edition:1.2.0",
|
||||||
|
"upstream": "2.4.8-p1",
|
||||||
|
"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": "2025-06-17T00:00:00+0000",
|
||||||
|
"eol": "2025-08-12T00:00:00+0000"
|
||||||
|
},
|
||||||
|
"mage-os/project-community-edition:1.3.0": {
|
||||||
|
"magento": "mage-os/project-community-edition:1.3.0",
|
||||||
|
"upstream": "2.4.8-p2",
|
||||||
|
"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": "2025-08-13T00:00:00+0000",
|
||||||
|
"eol": "2025-09-08T00:00:00+0000"
|
||||||
|
},
|
||||||
|
"mage-os/project-community-edition:1.3.1": {
|
||||||
|
"magento": "mage-os/project-community-edition:1.3.1",
|
||||||
|
"upstream": "2.4.8-p2",
|
||||||
|
"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": "2025-09-09T00:00:00+0000",
|
||||||
|
"eol": "2025-10-16T00:00:00+0000"
|
||||||
|
},
|
||||||
|
"mage-os/project-community-edition:2.0.0": {
|
||||||
|
"magento": "mage-os/project-community-edition:2.0.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": "2025-10-16T00: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,44 +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",
|
||||||
"rabbitmq": "rabbitmq:4.0-management",
|
"rabbitmq": "rabbitmq:4.1-management",
|
||||||
"redis": "redis:7.2",
|
"valkey": "valkey/valkey:8.0",
|
||||||
"valkey": "valkey:8.0",
|
"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"
|
||||||
},
|
},
|
||||||
"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",
|
||||||
"rabbitmq": "rabbitmq:4.0-management",
|
"rabbitmq": "rabbitmq:4.1-management",
|
||||||
"redis": "redis:7.2",
|
"valkey": "valkey/valkey:8.0",
|
||||||
"valkey": "valkey:8.0",
|
"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"
|
||||||
},
|
},
|
||||||
"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",
|
||||||
"rabbitmq": "rabbitmq:4.0-management",
|
"opensearch": "opensearchproject/opensearch:3",
|
||||||
"redis": "redis:7.2",
|
"rabbitmq": "rabbitmq:4.1-management",
|
||||||
"valkey": "valkey:8.0",
|
"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",
|
||||||
@@ -319,7 +319,7 @@
|
|||||||
"nginx": "nginx:1.22",
|
"nginx": "nginx:1.22",
|
||||||
"os": "ubuntu-latest",
|
"os": "ubuntu-latest",
|
||||||
"release": "2024-06-11T00:00:00+0000",
|
"release": "2024-06-11T00:00:00+0000",
|
||||||
"eol": "2024-08-12T00:00:00+0000"
|
"eol": "2024-08-13T00:00:00+0000"
|
||||||
},
|
},
|
||||||
"magento/project-community-edition:2.4.4-p10": {
|
"magento/project-community-edition:2.4.4-p10": {
|
||||||
"magento": "magento/project-community-edition:2.4.4-p10",
|
"magento": "magento/project-community-edition:2.4.4-p10",
|
||||||
@@ -333,7 +333,7 @@
|
|||||||
"nginx": "nginx:1.22",
|
"nginx": "nginx:1.22",
|
||||||
"os": "ubuntu-latest",
|
"os": "ubuntu-latest",
|
||||||
"release": "2024-08-13T00:00:00+0000",
|
"release": "2024-08-13T00:00:00+0000",
|
||||||
"eol": "2024-10-07T00:00:00+0000"
|
"eol": "2024-10-08T00:00:00+0000"
|
||||||
},
|
},
|
||||||
"magento/project-community-edition:2.4.4-p11": {
|
"magento/project-community-edition:2.4.4-p11": {
|
||||||
"magento": "magento/project-community-edition:2.4.4-p11",
|
"magento": "magento/project-community-edition:2.4.4-p11",
|
||||||
@@ -347,7 +347,7 @@
|
|||||||
"nginx": "nginx:1.22",
|
"nginx": "nginx:1.22",
|
||||||
"os": "ubuntu-latest",
|
"os": "ubuntu-latest",
|
||||||
"release": "2024-10-08T00:00:00+0000",
|
"release": "2024-10-08T00:00:00+0000",
|
||||||
"eol": "2025-02-10T00:00:00+0000"
|
"eol": "2025-02-11T00:00:00+0000"
|
||||||
},
|
},
|
||||||
"magento/project-community-edition:2.4.4-p12": {
|
"magento/project-community-edition:2.4.4-p12": {
|
||||||
"magento": "magento/project-community-edition:2.4.4-p12",
|
"magento": "magento/project-community-edition:2.4.4-p12",
|
||||||
@@ -361,7 +361,7 @@
|
|||||||
"nginx": "nginx:1.22",
|
"nginx": "nginx:1.22",
|
||||||
"os": "ubuntu-latest",
|
"os": "ubuntu-latest",
|
||||||
"release": "2025-02-11T00:00:00+0000",
|
"release": "2025-02-11T00:00:00+0000",
|
||||||
"eol": "2025-04-07T23:59:59+0000"
|
"eol": "2025-04-08T00:00:00+0000"
|
||||||
},
|
},
|
||||||
"magento/project-community-edition:2.4.4-p13": {
|
"magento/project-community-edition:2.4.4-p13": {
|
||||||
"magento": "magento/project-community-edition:2.4.4-p13",
|
"magento": "magento/project-community-edition:2.4.4-p13",
|
||||||
@@ -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",
|
||||||
@@ -389,12 +389,12 @@
|
|||||||
"nginx": "nginx:1.22",
|
"nginx": "nginx:1.22",
|
||||||
"os": "ubuntu-latest",
|
"os": "ubuntu-latest",
|
||||||
"release": "2022-08-09T00:00:00+0000",
|
"release": "2022-08-09T00:00:00+0000",
|
||||||
"eol": "2022-08-09T00:00:00+0000"
|
"eol": "2022-10-11T00:00:00+0000"
|
||||||
},
|
},
|
||||||
"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",
|
||||||
@@ -501,7 +501,7 @@
|
|||||||
"nginx": "nginx:1.22",
|
"nginx": "nginx:1.22",
|
||||||
"os": "ubuntu-latest",
|
"os": "ubuntu-latest",
|
||||||
"release": "2024-06-11T00:00:00+0000",
|
"release": "2024-06-11T00:00:00+0000",
|
||||||
"eol": "2024-08-12T00:00:00+0000"
|
"eol": "2024-08-13T00:00:00+0000"
|
||||||
},
|
},
|
||||||
"magento/project-community-edition:2.4.5-p9": {
|
"magento/project-community-edition:2.4.5-p9": {
|
||||||
"magento": "magento/project-community-edition:2.4.5-p9",
|
"magento": "magento/project-community-edition:2.4.5-p9",
|
||||||
@@ -515,7 +515,7 @@
|
|||||||
"nginx": "nginx:1.22",
|
"nginx": "nginx:1.22",
|
||||||
"os": "ubuntu-latest",
|
"os": "ubuntu-latest",
|
||||||
"release": "2024-08-13T00:00:00+0000",
|
"release": "2024-08-13T00:00:00+0000",
|
||||||
"eol": "2024-10-07T00:00:00+0000"
|
"eol": "2024-10-08T00:00:00+0000"
|
||||||
},
|
},
|
||||||
"magento/project-community-edition:2.4.5-p10": {
|
"magento/project-community-edition:2.4.5-p10": {
|
||||||
"magento": "magento/project-community-edition:2.4.5-p10",
|
"magento": "magento/project-community-edition:2.4.5-p10",
|
||||||
@@ -529,7 +529,7 @@
|
|||||||
"nginx": "nginx:1.22",
|
"nginx": "nginx:1.22",
|
||||||
"os": "ubuntu-latest",
|
"os": "ubuntu-latest",
|
||||||
"release": "2024-10-08T00:00:00+0000",
|
"release": "2024-10-08T00:00:00+0000",
|
||||||
"eol": "2025-02-10T00:00:00+0000"
|
"eol": "2025-02-11T00:00:00+0000"
|
||||||
},
|
},
|
||||||
"magento/project-community-edition:2.4.5-p11": {
|
"magento/project-community-edition:2.4.5-p11": {
|
||||||
"magento": "magento/project-community-edition:2.4.5-p11",
|
"magento": "magento/project-community-edition:2.4.5-p11",
|
||||||
@@ -543,7 +543,7 @@
|
|||||||
"nginx": "nginx:1.22",
|
"nginx": "nginx:1.22",
|
||||||
"os": "ubuntu-latest",
|
"os": "ubuntu-latest",
|
||||||
"release": "2025-02-11T00:00:00+0000",
|
"release": "2025-02-11T00:00:00+0000",
|
||||||
"eol": "2025-04-07T23:59:59+0000"
|
"eol": "2025-04-08T00:00:00+0000"
|
||||||
},
|
},
|
||||||
"magento/project-community-edition:2.4.5-p12": {
|
"magento/project-community-edition:2.4.5-p12": {
|
||||||
"magento": "magento/project-community-edition:2.4.5-p12",
|
"magento": "magento/project-community-edition:2.4.5-p12",
|
||||||
@@ -557,12 +557,40 @@
|
|||||||
"nginx": "nginx:1.26",
|
"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": "2025-08-09T00:00:00+0000"
|
"eol": "2025-06-10T00:00:00+0000"
|
||||||
|
},
|
||||||
|
"magento/project-community-edition:2.4.5-p13": {
|
||||||
|
"magento": "magento/project-community-edition:2.4.5-p13",
|
||||||
|
"php": 8.1,
|
||||||
|
"composer": "2.2.21",
|
||||||
|
"mysql": "mysql:8.0",
|
||||||
|
"elasticsearch": "elasticsearch:7.17.5",
|
||||||
|
"rabbitmq": "rabbitmq:3.11-management",
|
||||||
|
"redis": "redis:6.2",
|
||||||
|
"varnish": "varnish:7.1",
|
||||||
|
"nginx": "nginx:1.22",
|
||||||
|
"os": "ubuntu-latest",
|
||||||
|
"release": "2025-06-10T00:00:00+0000",
|
||||||
|
"eol": "2025-08-12T00:00:00+0000"
|
||||||
|
},
|
||||||
|
"magento/project-community-edition:2.4.5-p14": {
|
||||||
|
"magento": "magento/project-community-edition:2.4.5-p14",
|
||||||
|
"php": 8.1,
|
||||||
|
"composer": "2.2.21",
|
||||||
|
"mysql": "mysql:8.0",
|
||||||
|
"elasticsearch": "elasticsearch:7.17.5",
|
||||||
|
"rabbitmq": "rabbitmq:3.11-management",
|
||||||
|
"redis": "redis:6.2",
|
||||||
|
"varnish": "varnish:7.1",
|
||||||
|
"nginx": "nginx:1.22",
|
||||||
|
"os": "ubuntu-latest",
|
||||||
|
"release": "2025-08-12T00:00:00+0000",
|
||||||
|
"eol": "2025-08-12T00:00:00+0000"
|
||||||
},
|
},
|
||||||
"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",
|
||||||
@@ -576,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",
|
||||||
@@ -590,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",
|
||||||
@@ -604,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"
|
||||||
@@ -618,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"
|
||||||
@@ -632,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"
|
||||||
@@ -646,63 +674,63 @@
|
|||||||
"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-12T00:00:00+0000"
|
"eol": "2024-08-13T00:00:00+0000"
|
||||||
},
|
},
|
||||||
"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-07T00:00:00+0000"
|
"eol": "2024-10-08T00:00:00+0000"
|
||||||
},
|
},
|
||||||
"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-10T00:00:00+0000"
|
"eol": "2025-02-11T00:00:00+0000"
|
||||||
},
|
},
|
||||||
"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-07T23:59:59+0000"
|
"eol": "2025-04-08T00:00:00+0000"
|
||||||
},
|
},
|
||||||
"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",
|
||||||
@@ -711,12 +739,70 @@
|
|||||||
"nginx": "nginx:1.26",
|
"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": "2026-03-14T00:00:00+0000"
|
"eol": "2025-06-10T00:00:00+0000"
|
||||||
|
},
|
||||||
|
"magento/project-community-edition:2.4.6-p11": {
|
||||||
|
"magento": "magento/project-community-edition:2.4.6-p11",
|
||||||
|
"php": 8.1,
|
||||||
|
"composer": "2.2.26",
|
||||||
|
"mysql": "mysql:8.0",
|
||||||
|
"elasticsearch": "elasticsearch:8.5.3",
|
||||||
|
"rabbitmq": "rabbitmq:3.13-management",
|
||||||
|
"redis": "redis:7.2",
|
||||||
|
"varnish": "varnish:7.3",
|
||||||
|
"nginx": "nginx:1.26",
|
||||||
|
"os": "ubuntu-latest",
|
||||||
|
"release": "2025-06-10T00:00:00+0000",
|
||||||
|
"eol": "2025-08-12T00:00:00+0000"
|
||||||
|
},
|
||||||
|
"magento/project-community-edition:2.4.6-p12": {
|
||||||
|
"magento": "magento/project-community-edition:2.4.6-p12",
|
||||||
|
"php": 8.1,
|
||||||
|
"composer": "2.2.26",
|
||||||
|
"mysql": "mysql:8.0",
|
||||||
|
"elasticsearch": "elasticsearch:8.5.3",
|
||||||
|
"rabbitmq": "rabbitmq:3.13-management",
|
||||||
|
"redis": "redis:7.2",
|
||||||
|
"varnish": "varnish:7.3",
|
||||||
|
"nginx": "nginx:1.28",
|
||||||
|
"os": "ubuntu-latest",
|
||||||
|
"release": "2025-08-12T00:00:00+0000",
|
||||||
|
"eol": "2025-10-14T00:00:00+0000"
|
||||||
|
},
|
||||||
|
"magento/project-community-edition:2.4.6-p13": {
|
||||||
|
"magento": "magento/project-community-edition:2.4.6-p13",
|
||||||
|
"php": 8.1,
|
||||||
|
"composer": "2.2.26",
|
||||||
|
"mysql": "mysql:8.0",
|
||||||
|
"elasticsearch": "elasticsearch:8.5.3",
|
||||||
|
"rabbitmq": "rabbitmq:3.13-management",
|
||||||
|
"redis": "redis:7.2",
|
||||||
|
"varnish": "varnish:7.3",
|
||||||
|
"nginx": "nginx:1.28",
|
||||||
|
"os": "ubuntu-latest",
|
||||||
|
"release": "2025-10-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",
|
||||||
@@ -730,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",
|
||||||
@@ -739,12 +825,12 @@
|
|||||||
"nginx": "nginx:1.26",
|
"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-12T00:00:00+0000"
|
"eol": "2024-08-13T00:00:00+0000"
|
||||||
},
|
},
|
||||||
"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",
|
||||||
@@ -753,12 +839,12 @@
|
|||||||
"nginx": "nginx:1.26",
|
"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-07T00:00:00+0000"
|
"eol": "2024-10-08T00:00:00+0000"
|
||||||
},
|
},
|
||||||
"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",
|
||||||
@@ -767,12 +853,12 @@
|
|||||||
"nginx": "nginx:1.26",
|
"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-10T00:00:00+0000"
|
"eol": "2025-02-11T00:00:00+0000"
|
||||||
},
|
},
|
||||||
"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",
|
||||||
@@ -781,12 +867,12 @@
|
|||||||
"nginx": "nginx:1.26",
|
"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-07T23:59:59+0000"
|
"eol": "2025-04-08T00:00:00+0000"
|
||||||
},
|
},
|
||||||
"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",
|
||||||
@@ -795,21 +881,136 @@
|
|||||||
"nginx": "nginx:1.26",
|
"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": "2025-06-10T00:00:00+0000"
|
||||||
|
},
|
||||||
|
"magento/project-community-edition:2.4.7-p6": {
|
||||||
|
"magento": "magento/project-community-edition:2.4.7-p6",
|
||||||
|
"php": 8.3,
|
||||||
|
"composer": "2.9.5",
|
||||||
|
"mysql": "mariadb:10.6",
|
||||||
|
"elasticsearch": "elasticsearch:8.17.4",
|
||||||
|
"rabbitmq": "rabbitmq:3.13-management",
|
||||||
|
"redis": "redis:7.2",
|
||||||
|
"varnish": "varnish:7.5",
|
||||||
|
"nginx": "nginx:1.26",
|
||||||
|
"os": "ubuntu-latest",
|
||||||
|
"release": "2025-06-10T00:00:00+0000",
|
||||||
|
"eol": "2025-08-12T00:00:00+0000"
|
||||||
|
},
|
||||||
|
"magento/project-community-edition:2.4.7-p7": {
|
||||||
|
"magento": "magento/project-community-edition:2.4.7-p7",
|
||||||
|
"php": 8.3,
|
||||||
|
"composer": "2.9.5",
|
||||||
|
"mysql": "mariadb:10.6",
|
||||||
|
"elasticsearch": "elasticsearch:8.17.4",
|
||||||
|
"rabbitmq": "rabbitmq:3.13-management",
|
||||||
|
"redis": "redis:7.2",
|
||||||
|
"varnish": "varnish:7.5",
|
||||||
|
"nginx": "nginx:1.28",
|
||||||
|
"os": "ubuntu-latest",
|
||||||
|
"release": "2025-08-12T00:00:00+0000",
|
||||||
|
"eol": "2025-10-14T00:00:00+0000"
|
||||||
|
},
|
||||||
|
"magento/project-community-edition:2.4.7-p8": {
|
||||||
|
"magento": "magento/project-community-edition:2.4.7-p8",
|
||||||
|
"php": 8.3,
|
||||||
|
"composer": "2.9.5",
|
||||||
|
"mysql": "mariadb:10.6",
|
||||||
|
"elasticsearch": "elasticsearch:8.17.4",
|
||||||
|
"rabbitmq": "rabbitmq:3.13-management",
|
||||||
|
"redis": "redis:7.2",
|
||||||
|
"varnish": "varnish:7.5",
|
||||||
|
"nginx": "nginx:1.28",
|
||||||
|
"os": "ubuntu-latest",
|
||||||
|
"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.5",
|
||||||
"rabbitmq": "rabbitmq:4.0-management",
|
"rabbitmq": "rabbitmq:4.0-management",
|
||||||
"redis": "redis:7.2",
|
"redis": "redis:7.2",
|
||||||
"valkey": "valkey:8.0",
|
"valkey": "valkey/valkey:8.0",
|
||||||
"varnish": "varnish:7.6",
|
"varnish": "varnish:7.6",
|
||||||
"nginx": "nginx:1.26",
|
"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": "2025-06-10T00:00:00+0000"
|
||||||
|
},
|
||||||
|
"magento/project-community-edition:2.4.8-p1": {
|
||||||
|
"magento": "magento/project-community-edition:2.4.8-p1",
|
||||||
|
"php": 8.4,
|
||||||
|
"composer": "2.9.5",
|
||||||
|
"mysql": "mysql:8.4",
|
||||||
|
"opensearch": "opensearchproject/opensearch:2.19.5",
|
||||||
|
"rabbitmq": "rabbitmq:4.0-management",
|
||||||
|
"redis": "redis:7.2",
|
||||||
|
"varnish": "varnish:7.6",
|
||||||
|
"nginx": "nginx:1.26",
|
||||||
|
"os": "ubuntu-latest",
|
||||||
|
"release": "2025-06-10T00:00:00+0000",
|
||||||
|
"eol": "2025-08-12T00:00:00+0000"
|
||||||
|
},
|
||||||
|
"magento/project-community-edition:2.4.8-p2": {
|
||||||
|
"magento": "magento/project-community-edition:2.4.8-p2",
|
||||||
|
"php": 8.4,
|
||||||
|
"composer": "2.9.5",
|
||||||
|
"mysql": "mysql:8.4",
|
||||||
|
"opensearch": "opensearchproject/opensearch:3",
|
||||||
|
"rabbitmq": "rabbitmq:4.0-management",
|
||||||
|
"redis": "redis:7.2",
|
||||||
|
"varnish": "varnish:7.6",
|
||||||
|
"nginx": "nginx:1.28",
|
||||||
|
"os": "ubuntu-latest",
|
||||||
|
"release": "2025-08-12T00:00:00+0000",
|
||||||
|
"eol": "2025-10-14T00:00:00+0000"
|
||||||
|
},
|
||||||
|
"magento/project-community-edition:2.4.8-p3": {
|
||||||
|
"magento": "magento/project-community-edition:2.4.8-p3",
|
||||||
|
"php": 8.4,
|
||||||
|
"composer": "2.9.5",
|
||||||
|
"mysql": "mysql:8.4",
|
||||||
|
"opensearch": "opensearchproject/opensearch:3",
|
||||||
|
"rabbitmq": "rabbitmq:4.0-management",
|
||||||
|
"redis": "redis:7.2",
|
||||||
|
"varnish": "varnish:7.6",
|
||||||
|
"nginx": "nginx:1.28",
|
||||||
|
"os": "ubuntu-latest",
|
||||||
|
"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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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@v2
|
|
||||||
- uses: graycoreio/github-actions-magento2/unit-test@main
|
|
||||||
with:
|
|
||||||
php_version: ${{ matrix.php_version }}
|
|
||||||
composer_auth: ${{ secrets.COMPOSER_AUTH }}
|
|
||||||
```
|
|
||||||
@@ -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.1"
|
|
||||||
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@v3
|
|
||||||
with:
|
|
||||||
key: "composer | v3 | ${{ 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"
|
|
||||||
Reference in New Issue
Block a user