From 8813bf3766d5baca47d692ba5042888cd158f573 Mon Sep 17 00:00:00 2001 From: Malte Isberner <2822367+misberner@users.noreply.github.com> Date: Tue, 8 Jun 2021 15:11:59 +0200 Subject: [PATCH] ROX-7299: Push images as manifest lists (#421) --- .circleci/config.yml | 24 ++++++++++++------------ scripts/push-as-manifest-list.sh | 23 +++++++++++++++++++++++ 2 files changed, 35 insertions(+), 12 deletions(-) create mode 100755 scripts/push-as-manifest-list.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index e3575fd472..3f5741b69a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -12,7 +12,7 @@ defaultImage: &defaultImage defaultMachine: &defaultMachine machine: - image: ubuntu-2004:202010-01 + image: ubuntu-2004:202104-01 runOnAllTags: &runOnAllTags filters: @@ -883,22 +883,22 @@ jobs: name: Push images command: | echo "Pushing collector base image" - docker push "stackrox/collector:${COLLECTOR_VERSION}-base" + ~/workspace/go/src/github.com/stackrox/collector/scripts/push-as-manifest-list.sh "stackrox/collector:${COLLECTOR_VERSION}-base" echo "Pushing collector image" - docker push "stackrox/collector:${COLLECTOR_VERSION}" + ~/workspace/go/src/github.com/stackrox/collector/scripts/push-as-manifest-list.sh "stackrox/collector:${COLLECTOR_VERSION}" echo "Pushing collector latest image" - docker push "stackrox/collector:${COLLECTOR_VERSION}-latest" + ~/workspace/go/src/github.com/stackrox/collector/scripts/push-as-manifest-list.sh "stackrox/collector:${COLLECTOR_VERSION}-latest" echo "Pushing collector slim image" - docker push "stackrox/collector:${COLLECTOR_VERSION}-slim" + ~/workspace/go/src/github.com/stackrox/collector/scripts/push-as-manifest-list.sh "stackrox/collector:${COLLECTOR_VERSION}-slim" echo "Pushing collector rhel base image" - docker push "stackrox/collector-rhel:${COLLECTOR_VERSION}-base" + ~/workspace/go/src/github.com/stackrox/collector/scripts/push-as-manifest-list.sh "stackrox/collector-rhel:${COLLECTOR_VERSION}-base" echo "Pushing collector rhel image" - docker push "stackrox/collector-rhel:${COLLECTOR_VERSION}" + ~/workspace/go/src/github.com/stackrox/collector/scripts/push-as-manifest-list.sh "stackrox/collector-rhel:${COLLECTOR_VERSION}" echo "Pushing collector rhel latest image" - docker push "stackrox/collector-rhel:${COLLECTOR_VERSION}-latest" + ~/workspace/go/src/github.com/stackrox/collector/scripts/push-as-manifest-list.sh "stackrox/collector-rhel:${COLLECTOR_VERSION}-latest" echo "Pushing collector rhel slim image" - docker push "stackrox/collector-rhel:${COLLECTOR_VERSION}-slim" + ~/workspace/go/src/github.com/stackrox/collector/scripts/push-as-manifest-list.sh "stackrox/collector-rhel:${COLLECTOR_VERSION}-slim" kernel-module-build-failures-check: <<: *defaultImage @@ -1430,10 +1430,10 @@ jobs: "${container_build_dir}" if [[ "$CIRCLE_BRANCH" != "master" && -z "$CIRCLE_TAG" ]]; then - docker push "stackrox/collector:${collector_ver}-reload-latest" | cat + ~/workspace/go/src/github.com/stackrox/collector/scripts/push-as-manifest-list.sh "stackrox/collector:${collector_ver}-reload-latest" | cat else - docker push "stackrox/collector:${collector_ver}-latest" | cat - docker push "collector.stackrox.io/collector:${collector_ver}-latest" | cat + ~/workspace/go/src/github.com/stackrox/collector/scripts/push-as-manifest-list.sh "stackrox/collector:${collector_ver}-latest" | cat + ~/workspace/go/src/github.com/stackrox/collector/scripts/push-as-manifest-list.sh "collector.stackrox.io/collector:${collector_ver}-latest" | cat fi done diff --git a/scripts/push-as-manifest-list.sh b/scripts/push-as-manifest-list.sh new file mode 100755 index 0000000000..081fc2d196 --- /dev/null +++ b/scripts/push-as-manifest-list.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +set -euo pipefail + +die() { + echo >&2 "$@" + exit 1 +} + +[[ "$#" == 1 ]] || die "Usage: $0 " + +image="$1" + +[[ -n "$image" ]] || die "No image specified" +[[ "$image" == *:* ]] || die "Must specify a tagged image reference when using this script" + +arch_image="${image}-amd64" +docker tag "$image" "$arch_image" + +docker push "$arch_image" +docker manifest create "$image" "$arch_image" + +docker manifest push "$image"