diff options
author | 2020-08-31 20:25:13 +0300 | |
---|---|---|
committer | 2020-09-04 16:48:55 +0200 | |
commit | 8c87ce7de4d696ce595bf497aee42c8b80d8bd9f (patch) | |
tree | cad1c8756484ffc9ac2c8e4574ff98f43ece63b6 /deploy.sh | |
parent | Push all stage3 images to the same Docker repo (diff) | |
download | docker-images-8c87ce7de4d696ce595bf497aee42c8b80d8bd9f.tar.gz docker-images-8c87ce7de4d696ce595bf497aee42c8b80d8bd9f.tar.bz2 docker-images-8c87ce7de4d696ce595bf497aee42c8b80d8bd9f.zip |
Deploy manifest lists along with per-arch images
Signed-off-by: Konstantinos Smanis <konstantinos.smanis@gmail.com>
Signed-off-by: Alexys Jacob <ultrabug@gentoo.org>
Diffstat (limited to 'deploy.sh')
-rwxr-xr-x | deploy.sh | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/deploy.sh b/deploy.sh new file mode 100755 index 0000000..b27d5ab --- /dev/null +++ b/deploy.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +if [[ -z "$TARGET" ]]; then + echo "TARGET environment variable must be set e.g. TARGET=stage3-amd64." + exit 1 +fi + +# Split the TARGET variable into three elements separated by hyphens +IFS=- read -r NAME ARCH SUFFIX <<< "${TARGET}" + +# Push built images +echo "${DOCKER_PASSWORD}" | docker login -u "${DOCKER_USERNAME}" --password-stdin +docker push "${ORG}/${NAME}" + +if [[ "${TARGET}" != stage* ]]; then + echo "Done! No manifests to push for TARGET=${TARGET}." + exit 0 +fi + +VERSION=${VERSION:-$(date -u +%Y%m%d)} + +declare -A MANIFEST_ARCHES=( + [stage3:latest]="amd64;arm64;armv5tel;armv6j_hardfp;armv7a_hardfp;ppc64le;s390x;x86" + [stage3:hardened]="amd64;x86" + [stage3:hardened-nomultilib]="amd64" + [stage3:musl-hardened]="amd64" + [stage3:musl-vanilla]="amd64;x86" + [stage3:nomultilib]="amd64" + [stage3:systemd]="amd64;arm64;x86" + [stage3:uclibc-hardened]="amd64;x86" + [stage3:uclibc-vanilla]="amd64;x86" +) + +# Latest manifests +MANIFEST="${NAME}:${SUFFIX:-latest}" +IFS=';' read -ra ARCHES <<< "${MANIFEST_ARCHES[${MANIFEST}]}" + +TAGS=() +for ARCH in "${ARCHES[@]}"; do + TAGS+=("${ORG}/${NAME}:${ARCH}${SUFFIX:+-${SUFFIX}}") +done + +docker manifest create "${ORG}/${MANIFEST}" "${TAGS[@]}" +docker manifest push "${ORG}/${MANIFEST}" + +# Dated manifests +MANIFEST="${NAME}:${SUFFIX:+${SUFFIX}-}${VERSION}" + +TAGS=() +for ARCH in "${ARCHES[@]}"; do + TAGS+=("${ORG}/${NAME}:${ARCH}${SUFFIX:+-${SUFFIX}}-${VERSION}") +done + +docker manifest create "${ORG}/${MANIFEST}" "${TAGS[@]}" +docker manifest push "${ORG}/${MANIFEST}" |