Skip to content

chore(ZMS): move php-base images into monorepo as zmsbase #1

chore(ZMS): move php-base images into monorepo as zmsbase

chore(ZMS): move php-base images into monorepo as zmsbase #1

name: 🐳 Build ZMS base images
on:
push:
branches:
- "*"
tags:
- "*"
paths:
- "zmsbase/**"
- ".github/workflows/zmsbase-build-images.yaml"
schedule:
- cron: "0 0 1 * *"
workflow_dispatch:
permissions:
contents: read
packages: write
defaults:
run:
working-directory: zmsbase
jobs:
php_v8_4:
runs-on: ubuntu-latest
env:
IMAGE: ghcr.io/it-at-m/eappointment/zmsbase
VERSION: "8.4"
DOCKERFILE: php84/Dockerfile
XDEBUG_VERSION: "xdebug-3.4.0"
COMPOSER_VERSION: "2"
GHCR_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Log in to GitHub Container Registry
run: echo "${{ env.GHCR_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
- name: Pull existing image for cache (if any)
run: |
docker pull "${{ env.IMAGE }}:${{ env.VERSION }}-dev" || echo "No preexisting image found"
- name: Build base image
run: |
docker build --pull \
--build-arg XDEBUG_VERSION=${{ env.XDEBUG_VERSION }} \
--build-arg COMPOSER_VERSION=${{ env.COMPOSER_VERSION }} \
--target base \
-f "${{ env.DOCKERFILE }}" \
-t "${{ env.IMAGE }}:${{ env.VERSION }}-base" \
.
- name: Build dev image without cache
run: |
docker build --pull --no-cache \
--build-arg XDEBUG_VERSION=${{ env.XDEBUG_VERSION }} \
--build-arg COMPOSER_VERSION=${{ env.COMPOSER_VERSION }} \
--target dev \
-f "${{ env.DOCKERFILE }}" \
-t "${{ env.IMAGE }}:${{ env.VERSION }}-dev" \
.
- name: Validate PHP setup
run: docker run --rm -i "${{ env.IMAGE }}:${{ env.VERSION }}-dev" php-fpm -t
- name: Push base image to GHCR
run: docker push "${{ env.IMAGE }}:${{ env.VERSION }}-base"
- name: Push dev image to GHCR
run: docker push "${{ env.IMAGE }}:${{ env.VERSION }}-dev"
php_v8_3:
runs-on: ubuntu-latest
env:
IMAGE: ghcr.io/it-at-m/eappointment/zmsbase
VERSION: "8.3"
DOCKERFILE: php83/Dockerfile
XDEBUG_VERSION: "xdebug-3.3.0"
COMPOSER_VERSION: "2"
GHCR_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Log in to GitHub Container Registry
run: echo "${{ env.GHCR_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
- name: Pull existing image for cache (if any)
run: |
docker pull "${{ env.IMAGE }}:${{ env.VERSION }}-dev" || echo "No preexisting image found"
- name: Build base image
run: |
docker build --pull \
--build-arg XDEBUG_VERSION=${{ env.XDEBUG_VERSION }} \
--build-arg COMPOSER_VERSION=${{ env.COMPOSER_VERSION }} \
--target base \
-f "${{ env.DOCKERFILE }}" \
-t "${{ env.IMAGE }}:${{ env.VERSION }}-base" \
.
- name: Build dev image without cache
run: |
docker build --pull --no-cache \
--build-arg XDEBUG_VERSION=${{ env.XDEBUG_VERSION }} \
--build-arg COMPOSER_VERSION=${{ env.COMPOSER_VERSION }} \
--target dev \
-f "${{ env.DOCKERFILE }}" \
-t "${{ env.IMAGE }}:${{ env.VERSION }}-dev" \
.
- name: Validate PHP setup
run: docker run --rm -i "${{ env.IMAGE }}:${{ env.VERSION }}-dev" php-fpm -t
- name: Push base image to GHCR
run: docker push "${{ env.IMAGE }}:${{ env.VERSION }}-base"
- name: Push dev image to GHCR
run: docker push "${{ env.IMAGE }}:${{ env.VERSION }}-dev"
php_v8_3_local:
strategy:
fail-fast: false
matrix:
include:
- runner: ubuntu-latest
platform: linux/amd64
tag_suffix: amd64
- runner: ubuntu-24.04-arm
platform: linux/arm64
tag_suffix: arm64
runs-on: ${{ matrix.runner }}
env:
IMAGE: ghcr.io/it-at-m/eappointment/zmsbase
VERSION_BASE: "8.3-local"
DOCKERFILE: php83-local/Dockerfile
GHCR_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Log in to GitHub Container Registry
run: echo "${{ env.GHCR_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
- name: Build and push single-arch image
run: |
TAG="${{ env.VERSION_BASE }}-${{ matrix.tag_suffix }}"
docker build --pull --no-cache \
--platform "${{ matrix.platform }}" \
-f "${{ env.DOCKERFILE }}" \
-t "${{ env.IMAGE }}:${TAG}" \
.
docker push "${{ env.IMAGE }}:${TAG}"
- name: Validate PHP setup
run: |
TAG="${{ env.VERSION_BASE }}-${{ matrix.tag_suffix }}"
docker run --rm -i "${{ env.IMAGE }}:${TAG}" php -v