Add Mage-OS to the CI matrix #27
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |