#!/bin/bash set -e # Stop on error if [ $# -ne 2 ]; then echo "Usage: $0 " echo "Example: $0 base-debian 0e85448" exit 1 fi IMAGE_NAME=$1 COMMIT_ID=$2 REPO="registry.tomastm.com" # Define image tags IMAGE_AMD64="${REPO}/${IMAGE_NAME}:${COMMIT_ID}-amd64" IMAGE_ARM64="${REPO}/${IMAGE_NAME}:${COMMIT_ID}-arm64" IMAGE_MULTI="${REPO}/${IMAGE_NAME}:${COMMIT_ID}" IMAGE_LATEST="${REPO}/${IMAGE_NAME}:latest" # Check if both architectures exist in the registry echo "🔎 Checking if both architectures exist..." if ! docker manifest inspect ${IMAGE_AMD64} &>/dev/null || ! docker manifest inspect ${IMAGE_ARM64} &>/dev/null; then echo "❌ Error: One or both architectures are missing in the registry." echo "Ensure both ${IMAGE_AMD64} and ${IMAGE_ARM64} are pushed before running this script." exit 1 fi # Create the multi-architecture manifest for the commit ID echo "📜 Creating multi-architecture manifest for ${COMMIT_ID}..." docker manifest create ${IMAGE_MULTI} ${IMAGE_AMD64} ${IMAGE_ARM64} --amend # Push the multi-arch manifest for the commit ID docker manifest push ${IMAGE_MULTI} echo "✅ Successfully pushed multi-arch manifest: ${IMAGE_MULTI}" # Create and push the latest multi-architecture manifest echo "🔄 Updating latest multi-architecture manifest..." docker manifest create ${IMAGE_LATEST} ${IMAGE_AMD64} ${IMAGE_ARM64} --amend docker manifest push ${IMAGE_LATEST} echo "✅ Successfully updated latest manifest: ${IMAGE_LATEST}"