Skip to content

Add Mage-OS to the CI matrix #41

Add Mage-OS to the CI matrix

Add Mage-OS to the CI matrix #41

name: Integration Tests
on:
push:
branches:
- master
pull_request:
types: [opened, reopened]
branches:
- master
- release/**
jobs:
build:
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
- 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: Upload our code into the docker container
run: docker cp "$(pwd)" magento-project-community-edition:/data/extensions/
- 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: |
check_branch() {
local OWNER="$1"
local REPO="$2"
local BRANCH="$3"
local DEFAULT="$4"
STATUS=$(curl -s -o /dev/null -w "%{http_code}" \
-H "Authorization: Bearer $TOKEN" \
"https://api.github.com/repos/$OWNER/$REPO/branches/$BRANCH")
if [ "$STATUS" -eq 200 ]; then
echo "$BRANCH"
else
echo "$DEFAULT"
fi
}
OWNER="$(echo "${GITHUB_REPOSITORY}" | cut -d'/' -f1)"
CURRENT_REPO="$(echo "${GITHUB_REPOSITORY}" | cut -d'/' -f2)"
BRANCH="${{ steps.extract_branch.outputs.branch }}"
DEFAULT="master"
if [[ "$CURRENT_REPO" == *internal* ]]; then
ADMIN_REPO="magento2-internal-adminhtml"
CORE_REPO="magento2-internal-core"
SDK_REPO="php-sdk-internal"
else
ADMIN_REPO="magento2-adminhtml"
CORE_REPO="magento2-core"
SDK_REPO="php-sdk"
fi
ADMIN_BRANCH=$(check_branch "$OWNER" "$ADMIN_REPO" "$BRANCH" "$DEFAULT")
CORE_BRANCH=$(check_branch "$OWNER" "$CORE_REPO" "$BRANCH" "$DEFAULT")
SDK_BRANCH=$(check_branch "$OWNER" "$SDK_REPO" "$BRANCH" "$DEFAULT")
echo "admin-repo=$OWNER/$ADMIN_REPO" >> $GITHUB_OUTPUT
echo "admin-branch=$ADMIN_BRANCH" >> $GITHUB_OUTPUT
echo "core-repo=$OWNER/$CORE_REPO" >> $GITHUB_OUTPUT
echo "core-branch=$CORE_BRANCH" >> $GITHUB_OUTPUT
echo "sdk-repo=$OWNER/$SDK_REPO" >> $GITHUB_OUTPUT
echo "sdk-branch=$SDK_BRANCH" >> $GITHUB_OUTPUT
- uses: actions/checkout@v5
with:
repository: ${{ steps.pick.outputs.admin-repo }}
ref: ${{ steps.pick.outputs.admin-branch }}
token: ${{ env.TOKEN }}
path: magento2-adminhtml
- uses: actions/checkout@v5
with:
repository: ${{ steps.pick.outputs.core-repo }}
ref: ${{ steps.pick.outputs.core-branch }}
token: ${{ env.TOKEN }}
path: magento2-core
- uses: actions/checkout@v5
with:
repository: ${{ steps.pick.outputs.sdk-repo }}
ref: ${{ steps.pick.outputs.sdk-branch }}
token: ${{ env.TOKEN }}
path: php-sdk
- name: Create directories in the container
run: |
docker exec magento-project-community-edition mkdir -p /data/extensions/magento2-adminhtml
docker exec magento-project-community-edition mkdir -p /data/extensions/magento2-core
docker exec magento-project-community-edition mkdir -p /data/extensions/php-sdk
- name: Copy repositories into the container
run: |
docker cp "${{ github.workspace }}/magento2-adminhtml/." magento-project-community-edition:/data/extensions/magento2-adminhtml
docker cp "${{ github.workspace }}/magento2-core/." magento-project-community-edition:/data/extensions/magento2-core
docker cp "${{ github.workspace }}/php-sdk/." magento-project-community-edition:/data/extensions/php-sdk
- name: Install the extension in Magento
run: docker exec magento-project-community-edition composer require multisafepay/magento2-frontend
- name: Run tests
run: docker exec magento-project-community-edition bash -c "php bin/magento deploy:mode:set developer && cd /data/dev/tests/integration/ && ../../../vendor/bin/phpunit ../../../vendor/multisafepay/magento2-frontend/Test/Integration"