Skip to content

Update base images for PyFR and SPH-EXA #6

Update base images for PyFR and SPH-EXA

Update base images for PyFR and SPH-EXA #6

name: Release Transformers Benchmark Multi-Arch
on:
push:
paths:
- 'hpc/benchmarks/transformers/Containerfile'
permissions:
contents: write
packages: write
actions: read
env:
REGISTRY: ghcr.io
OWNER: ${{ github.repository_owner }}
REPO: ${{ github.repository }}
jobs:
build:
strategy:
fail-fast: false
matrix:
include:
- service: transformers
arch: amd64
runner: ubuntu-latest
- service: transformers
arch: arm64
runner: ubuntu-24.04-arm
runs-on: ${{ matrix.runner }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Detect Containerfile changes
id: filter
uses: dorny/paths-filter@v3
with:
filters: |
changed:
- 'hpc/benchmarks/transformers/Containerfile'
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
id: buildx
- name: Log in to GHCR
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build & push single-arch image
if: steps.filter.outputs.changed == 'true'
run: |
IMAGE="${{ env.REGISTRY }}/${{ env.REPO }}/${{ matrix.service }}"
CTX="hpc/benchmarks/${{ matrix.service }}"
docker buildx build \
--no-cache \
--builder "${{ steps.buildx.outputs.name }}" \
--platform linux/${{ matrix.arch }} \
--file hpc/benchmarks/${{ matrix.service }}/Containerfile \
--tag "${IMAGE}:latest-${{ matrix.arch }}" \
--push \
"${CTX}"
manifest:
needs: build
strategy:
fail-fast: false
matrix:
service: [transformers]
runs-on: ubuntu-latest
steps:
- name: Log in to GHCR
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Verify single-arch images exist
run: |
set -euo pipefail
REPO="${{ env.REGISTRY }}/${{ env.REPO }}/${{ matrix.service }}"
for ARCH in amd64 arm64; do
IMG="${REPO}:latest-${ARCH}"
echo "inspecting $IMG"
if ! docker buildx imagetools inspect "$IMG" > /dev/null; then
echo "::error file=manifest.yml::Image not found: $IMG"
exit 1
fi
done
- name: Create & push multi-arch manifest
run: |
REPO="${{ env.REGISTRY }}/${{ env.REPO }}/${{ matrix.service }}"
docker buildx imagetools create \
--tag "${REPO}:latest" \
"${REPO}:latest-amd64" \
"${REPO}:latest-arm64"