name: Image
on:
push:
tags: ["v*"]
permissions:
contents: read
packages: write
env:
IMAGE: ghcr.io/${{ github.repository }}
TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
build:
strategy:
matrix:
include:
- arch: amd64
runner: ubuntu-24.04
- arch: arm64
runner: ubuntu-24.04-arm
runs-on: ${{ matrix.runner }}
steps:
- uses: actions/checkout@v7
- run: echo "$TOKEN" | docker login ghcr.io -u "$GITHUB_ACTOR" --password-stdin
- run: |
tag="$IMAGE:${GITHUB_REF_NAME#v}-${{ matrix.arch }}"
docker build -t "$tag" .
docker push "$tag"
publish:
needs: build
runs-on: ubuntu-24.04
steps:
- run: echo "$TOKEN" | docker login ghcr.io -u "$GITHUB_ACTOR" --password-stdin
- run: |
version="${GITHUB_REF_NAME#v}"
docker buildx imagetools create -t "$IMAGE:$version" -t "$IMAGE:latest" \
"$IMAGE:$version-amd64" "$IMAGE:$version-arm64"