Skip to content

Add Mage-OS to the CI matrix #27

Add Mage-OS to the CI matrix

Add Mage-OS to the CI matrix #27

Workflow file for this run

name: Magento 2 PHPStan
on:
push:
branches:
- master
pull_request:
types: [opened, reopened]
branches:
- master
- release/**
jobs:
phpstan:
name: PHPStan
runs-on: ubuntu-latest
permissions:
contents: read
env:
TOKEN: ${{ secrets.GLOBAL_GITHUB_TOKEN }}
strategy:
matrix:
include:
- PHP_VERSION: php74-fpm
IMAGE: magento-project-community-edition
IMAGE_VERSION: magento2.3.7-p4
- PHP_VERSION: php82-fpm
IMAGE: magento-project-community-edition
IMAGE_VERSION: magento2.4.6-p12
- PHP_VERSION: php84-fpm
IMAGE: mage-os-community-edition
IMAGE_VERSION: mage-os3.3.0
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0
path: module-src
- name: Start Docker
run: docker run --detach --name magento-project-community-edition ghcr.io/controlaltdelete-nl/magento2-in-a-box/${{ matrix.IMAGE }}:${{ matrix.PHP_VERSION }}-${{ matrix.IMAGE_VERSION }}
- name: Extract branch name
id: extract_branch
shell: bash
run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT
- name: Pick repositories and branches
id: pick
shell: bash
run: |
set -euo pipefail
check_branch() {
local OWNER="$1" REPO="$2" BRANCH="$3" DEFAULT="$4"
local ENCODED_BRANCH STATUS
ENCODED_BRANCH=$(jq -rn --arg b "$BRANCH" '$b|@uri')
STATUS=$(curl -s -o /dev/null -w "%{http_code}" \
-H "Authorization: Bearer $TOKEN" \
-H "Accept: application/vnd.github+json" \
"https://api.github.com/repos/$OWNER/$REPO/branches/$ENCODED_BRANCH")
case "$STATUS" in
200) echo "$BRANCH" ;;
404) echo "$DEFAULT" ;;
*)
echo "Unexpected HTTP $STATUS when checking $OWNER/$REPO@$BRANCH" >&2
exit 1
;;
esac
}
OWNER="$(echo "${GITHUB_REPOSITORY}" | cut -d'/' -f1)"
CURRENT_REPO="$(echo "${GITHUB_REPOSITORY}" | cut -d'/' -f2)"
BRANCH="${{ steps.extract_branch.outputs.branch }}"
DEFAULT="master"
if [[ "${GITHUB_REPOSITORY}" == *internal* ]]; then
SDK_REPO="php-sdk-internal"
CORE_REPO="magento2-internal-core"
ADMINHTML_REPO="magento2-internal-adminhtml"
else
SDK_REPO="php-sdk"
CORE_REPO="magento2-core"
ADMINHTML_REPO="magento2-adminhtml"
fi
SDK_BRANCH=$(check_branch "$OWNER" "$SDK_REPO" "$BRANCH" "$DEFAULT")
CORE_BRANCH=$(check_branch "$OWNER" "$CORE_REPO" "$BRANCH" "$DEFAULT")
ADMINHTML_BRANCH=$(check_branch "$OWNER" "$ADMINHTML_REPO" "$BRANCH" "$DEFAULT")
echo "Selected sdk: $OWNER/$SDK_REPO@$SDK_BRANCH"
echo "Selected core: $OWNER/$CORE_REPO@$CORE_BRANCH"
echo "Selected adminhtml: $OWNER/$ADMINHTML_REPO@$ADMINHTML_BRANCH"
{
echo "module-package=multisafepay/magento2-frontend"
echo "current-repo=$CURRENT_REPO"
echo "sdk-repo=$OWNER/$SDK_REPO"
echo "sdk-branch=$SDK_BRANCH"
echo "core-repo=$OWNER/$CORE_REPO"
echo "core-branch=$CORE_BRANCH"
echo "adminhtml-repo=$OWNER/$ADMINHTML_REPO"
echo "adminhtml-branch=$ADMINHTML_BRANCH"
} >> "$GITHUB_OUTPUT"
- name: Checkout PHP-SDK
uses: actions/checkout@v5
with:
repository: ${{ steps.pick.outputs.sdk-repo }}
token: ${{ secrets.GLOBAL_GITHUB_TOKEN }}
ref: ${{ steps.pick.outputs.sdk-branch }}
path: php-sdk-src
- name: Checkout Magento 2 Core Repository
uses: actions/checkout@v5
with:
repository: ${{ steps.pick.outputs.core-repo }}
token: ${{ secrets.GLOBAL_GITHUB_TOKEN }}
ref: ${{ steps.pick.outputs.core-branch }}
path: magento2-core-src
- name: Checkout Magento 2 Adminhtml Repository
uses: actions/checkout@v5
with:
repository: ${{ steps.pick.outputs.adminhtml-repo }}
token: ${{ secrets.GLOBAL_GITHUB_TOKEN }}
ref: ${{ steps.pick.outputs.adminhtml-branch }}
path: magento2-adminhtml-src
- name: Create package-source directories
run: |
docker exec magento-project-community-edition mkdir -p /data/package-source/multisafepay/magento2-frontend
docker exec magento-project-community-edition mkdir -p /data/package-source/multisafepay/magento2-adminhtml
docker exec magento-project-community-edition mkdir -p /data/package-source/multisafepay/magento2-core
docker exec magento-project-community-edition mkdir -p /data/package-source/multisafepay/php-sdk
- name: Copy sources into container
run: |
docker cp module-src/. magento-project-community-edition:/data/package-source/multisafepay/magento2-frontend
docker cp magento2-adminhtml-src/. magento-project-community-edition:/data/package-source/multisafepay/magento2-adminhtml
docker cp magento2-core-src/. magento-project-community-edition:/data/package-source/multisafepay/magento2-core
docker cp php-sdk-src/. magento-project-community-edition:/data/package-source/multisafepay/php-sdk
- name: Allow composer plugins
run: docker exec --workdir /data magento-project-community-edition composer config --no-plugins allow-plugins true
- name: Disable Composer audit blocking
run: docker exec --workdir /data magento-project-community-edition composer config audit.block-insecure false
- name: Add MultiSafepay packages to Composer
run: docker exec --workdir /data magento-project-community-edition composer config repositories.multisafepay path "package-source/multisafepay/*"
- name: Require module
run: docker exec --workdir /data magento-project-community-edition composer require multisafepay/magento2-frontend:@dev --no-update --no-interaction
- name: Require PHPStan extension installer
run: docker exec --workdir /data magento-project-community-edition composer require --dev phpstan/extension-installer --no-update --no-interaction
- name: Require PHPStan Magento extension
run: docker exec --workdir /data magento-project-community-edition composer require --dev bitexpert/phpstan-magento:0.32.0 --no-update --no-interaction
- name: Install composer dependencies
run: docker exec --workdir /data magento-project-community-edition composer update multisafepay/magento2-frontend phpstan/extension-installer bitexpert/phpstan-magento --with-all-dependencies --no-interaction
- name: Run PHPStan
run: docker exec --workdir /data magento-project-community-edition vendor/bin/phpstan analyse -c vendor/multisafepay/magento2-frontend/phpstan.neon --error-format table --no-progress