Skip to content
This repository was archived by the owner on Apr 4, 2026. It is now read-only.

ci: add temporary test workflow for manifest logic validation #1

ci: add temporary test workflow for manifest logic validation

ci: add temporary test workflow for manifest logic validation #1

Workflow file for this run

name: Test Manifest Logic
# Temporary workflow to validate the push + manifest logic from the
# upstream-arm64-minimal branch. Tests against GHCR instead of Docker Hub.
# Delete this workflow before submitting upstream.
on:
push:
branches: [test-manifest-logic]
workflow_dispatch:
defaults:
run:
shell: bash
env:
REGISTRY: ghcr.io
REPO_NAME: ${{ github.repository_owner }}
IMAGE_NAME: docker-postgis
jobs:
# Test with 17-3.5 only (default + alpine, both arches)
build-and-push:
strategy:
fail-fast: false
matrix:
runner-platform: ['ubuntu-24.04', 'ubuntu-24.04-arm']
variant: [default, alpine]
name: 17-3.5-${{ matrix.variant }} (${{ matrix.runner-platform }})
runs-on: ${{ matrix.runner-platform }}
env:
VERSION: '17-3.5'
VARIANT: ${{ matrix.variant }}
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v4
- name: Build docker image
run: |
if [ "${{ env.VARIANT }}" = "default" ]; then
docker build --pull -t postgis/postgis:${{ env.VERSION }} ${{ env.VERSION }}
else
docker build --pull -t postgis/postgis:${{ env.VERSION }}-alpine ${{ env.VERSION }}/alpine
fi
- name: Determine architecture suffix
id: arch
run: |
if [ "${{ matrix.runner-platform }}" = "ubuntu-24.04" ]; then
echo "suffix=amd64" >> "$GITHUB_OUTPUT"
else
echo "suffix=arm64" >> "$GITHUB_OUTPUT"
fi
- name: Login to GHCR
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Push arch-tagged image to GHCR
env:
ARCH: ${{ steps.arch.outputs.suffix }}
run: |
FULL="${{ env.REGISTRY }}/${{ env.REPO_NAME }}/${{ env.IMAGE_NAME }}"
FULL=$(echo "$FULL" | tr '[:upper:]' '[:lower:]')
VERSION="${{ env.VERSION }}"
if [ "${{ env.VARIANT }}" = "default" ]; then
docker image tag postgis/postgis:${VERSION} ${FULL}:${VERSION}-${ARCH}
docker image push ${FULL}:${VERSION}-${ARCH}
fi
if [ "${{ env.VARIANT }}" = "alpine" ] && [ -d "${VERSION}/alpine" ]; then
docker image tag postgis/postgis:${VERSION}-alpine ${FULL}:${VERSION}-alpine-${ARCH}
docker image push ${FULL}:${VERSION}-alpine-${ARCH}
fi
# Test manifest creation — mirrors the upstream create-manifests job
create-manifests:
needs: build-and-push
strategy:
fail-fast: false
matrix:
variant: [default, alpine]
name: manifest 17-3.5-${{ matrix.variant }}
runs-on: ubuntu-24.04
permissions:
contents: read
packages: write
env:
VERSION: '17-3.5'
VARIANT: ${{ matrix.variant }}
steps:
- name: Login to GHCR
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Create and push multi-arch manifest
run: |
FULL="${{ env.REGISTRY }}/${{ env.REPO_NAME }}/${{ env.IMAGE_NAME }}"
FULL=$(echo "$FULL" | tr '[:upper:]' '[:lower:]')
if [ "${{ env.VARIANT }}" = "default" ]; then
TAG="${{ env.VERSION }}"
else
TAG="${{ env.VERSION }}-${{ env.VARIANT }}"
fi
echo "Creating manifest for ${FULL}:${TAG}"
docker manifest create ${FULL}:${TAG} \
${FULL}:${TAG}-amd64 \
${FULL}:${TAG}-arm64
docker manifest push ${FULL}:${TAG}
- name: Create latest manifest
if: ${{ env.VARIANT == 'default' }}
run: |
FULL="${{ env.REGISTRY }}/${{ env.REPO_NAME }}/${{ env.IMAGE_NAME }}"
FULL=$(echo "$FULL" | tr '[:upper:]' '[:lower:]')
docker manifest create ${FULL}:latest \
${FULL}:17-3.5-amd64 \
${FULL}:17-3.5-arm64
docker manifest push ${FULL}:latest
- name: Inspect manifest
run: |
FULL="${{ env.REGISTRY }}/${{ env.REPO_NAME }}/${{ env.IMAGE_NAME }}"
FULL=$(echo "$FULL" | tr '[:upper:]' '[:lower:]')
if [ "${{ env.VARIANT }}" = "default" ]; then
TAG="${{ env.VERSION }}"
else
TAG="${{ env.VERSION }}-${{ env.VARIANT }}"
fi
docker manifest inspect ${FULL}:${TAG}