kasm-workspaces-core-images/ci-scripts/weekly-manifest.sh
2025-08-15 10:04:04 -05:00

64 lines
No EOL
2.5 KiB
Bash

#!/bin/bash
REGISTRY_MIRRORS=("quay.io" "ghcr.io")
NAME1=$1
NAME2=$2
TYPE=$3
BASE=$4
APPS="kasm-apps"
SANITIZED_BRANCH_DAILY=${SANITIZED_BRANCH}-rolling-daily
SANITIZED_BRANCH=${SANITIZED_BRANCH}-rolling-weekly
tagImage() {
docker pull "$1"
docker tag "$1" "$2"
docker push "$2"
}
manifest() {
docker manifest push --purge "$1" || :
docker manifest create "$1" "$2":x86_64-"$3" "$2":aarch64-"$3"
docker manifest annotate "$1" "$2":aarch64-"$3" --os linux --arch arm64 --variant v8
docker manifest push --purge "$1"
}
if [[ "${NAME1}" == "${NAME2}" ]]; then
NAME="core-${NAME1}"
else
NAME="core-${NAME1}-${NAME2}"
fi
# Manifest for multi pull and push for single arch
# Will pull the daily rolling images and retag them to weekly
if [[ "${TYPE}" == "multi" ]]; then
# Pulling and retagging daily image
tagImage "${ORG_NAME}/${NAME}:x86_64-${SANITIZED_BRANCH_DAILY}" "${ORG_NAME}/${NAME}:x86_64-${SANITIZED_BRANCH}"
tagImage "${ORG_NAME}/${NAME}:aarch64-${SANITIZED_BRANCH_DAILY}" "${ORG_NAME}/${NAME}:aarch64-${SANITIZED_BRANCH}"
# Private Images
tagImage "${ORG_NAME}/${NAME}-private:x86_64-${SANITIZED_BRANCH_DAILY}" "${ORG_NAME}/${NAME}-private:x86_64-${SANITIZED_BRANCH}"
tagImage "${ORG_NAME}/${NAME}-private:aarch64-${SANITIZED_BRANCH_DAILY}" "${ORG_NAME}/${NAME}-private:aarch64-${SANITIZED_BRANCH}"
# Manifest tag
manifest "${ORG_NAME}/${NAME}:${SANITIZED_BRANCH}" "${ORG_NAME}/${NAME}" "${SANITIZED_BRANCH}"
manifest "${ORG_NAME}/${NAME}-private:${SANITIZED_BRANCH}" "${ORG_NAME}/${NAME}-private" "${SANITIZED_BRANCH}"
for MIRROR in "${REGISTRY_MIRRORS[@]}"; do
tagImage "${ORG_NAME}/${NAME}:x86_64-${SANITIZED_BRANCH_DAILY}" "${MIRROR}/${MIRROR_ORG_NAME}/${NAME}:x86_64-${SANITIZED_BRANCH}"
tagImage "${ORG_NAME}/${NAME}:aarch64-${SANITIZED_BRANCH_DAILY}" "${MIRROR}/${MIRROR_ORG_NAME}/${NAME}:aarch64-${SANITIZED_BRANCH}"
manifest "${MIRROR}/${MIRROR_ORG_NAME}/${NAME}:${SANITIZED_BRANCH}" "${MIRROR}/${MIRROR_ORG_NAME}/${NAME}" "${SANITIZED_BRANCH}"
done
# Single arch image just pull and push
else
tagImage "${ORG_NAME}/${NAME}:${SANITIZED_BRANCH_DAILY}" "${ORG_NAME}/${NAME}:${SANITIZED_BRANCH}"
tagImage "${ORG_NAME}/${NAME}-private:${SANITIZED_BRANCH_DAILY}" "${ORG_NAME}/${NAME}-private:${SANITIZED_BRANCH}"
for MIRROR in "${REGISTRY_MIRRORS[@]}"; do
tagImage "${ORG_NAME}/${NAME}:${SANITIZED_BRANCH_DAILY}" "${MIRROR}/${MIRROR_ORG_NAME}/${NAME}:${SANITIZED_BRANCH}"
done
fi