feat(get-magento-version): pull version from lockfile if it exists (#242)

Additionally, this exposes a new `output` called project which tells you which project was used.
This commit is contained in:
Damien Retzinger
2026-05-06 14:03:19 -04:00
committed by GitHub
parent bdb9528f8c
commit 87989bb250
2 changed files with 31 additions and 13 deletions
@@ -37,8 +37,13 @@ jobs:
with:
working-directory: ../magento2
- name: Fail if key does not match
- name: Fail if version does not match
if: steps.magento-version.outputs.version != '"2.4.5-p1"'
shell: bash
run: echo "${{ steps.magento-version.outputs.version }}" && exit 1
- name: Fail if project does not match
if: steps.magento-version.outputs.project != 'magento/project-community-edition'
shell: bash
run: echo "${{ steps.magento-version.outputs.project }}" && exit 1
+23 -10
View File
@@ -9,22 +9,35 @@ inputs:
required: false
outputs:
version: # id of output
description: 'The determined version of Magento'
version:
description: 'The resolved Magento version (e.g. 2.4.6-p14)'
value: ${{ steps.get-magento-version.outputs.version }}
project:
description: 'The Magento project package name (e.g. magento/project-community-edition)'
value: ${{ steps.get-magento-version.outputs.project }}
runs:
using: "composite"
steps:
- run: |
echo "version=$(cat composer.json | jq '.require
| with_entries( select(.key == "magento/product-community-edition" or .key == "magento/product-enterprise-edition") )
| to_entries
| .[0].value')" >> $GITHUB_OUTPUT
shell: bash
working-directory: ${{ inputs.working-directory }}
name: Compute Installed Magento version
- name: Compute Installed Magento version
id: get-magento-version
shell: bash
working-directory: ${{ inputs.working-directory }}
run: |
PATTERN="magento/product-(community|enterprise)-edition|mage-os/product-community-edition"
if [ -f composer.lock ]; then
RESULT=$(jq -r --arg p "$PATTERN" '.packages[] | select(.name | test($p)) | "\(.name) \(.version)"' composer.lock | head -1)
else
RESULT=$(jq -r --arg p "$PATTERN" '.require | to_entries[] | select(.key | test($p)) | "\(.key) \(.value)"' composer.json | head -1)
fi
PRODUCT=$(echo "$RESULT" | awk '{print $1}')
VERSION=$(echo "$RESULT" | awk '{print $2}' | sed 's/^v//')
PROJECT=$(echo "$PRODUCT" | sed 's/product-/project-/')
echo "version=\"$VERSION\"" >> $GITHUB_OUTPUT
echo "project=$PROJECT" >> $GITHUB_OUTPUT
branding:
icon: "code"