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
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: 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} |