From e01cf5b6165c34eb7237182b0b9f1a5a7f26662b Mon Sep 17 00:00:00 2001 From: Christopher Ferris Date: Tue, 12 Jun 2018 12:06:27 -0400 Subject: [PATCH] FAB-10294 script to publish multiarch manifest Change-Id: I5fd2ebb60be5b62d34bd24b6b73e4299ccf376f3 Signed-off-by: Christopher Ferris --- scripts/multiarch.sh | 74 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100755 scripts/multiarch.sh diff --git a/scripts/multiarch.sh b/scripts/multiarch.sh new file mode 100755 index 00000000000..3eb75bfb8f3 --- /dev/null +++ b/scripts/multiarch.sh @@ -0,0 +1,74 @@ +#!/bin/sh +# +# Copyright IBM Corp. All Rights Reserved. +# +# SPDX-License-Identifier: Apache-2.0 +# + +usage() { + echo "Usage: $0 " + echo " and credentials for the repository" + echo "ENV:" + echo " NS=$NS" + echo " VERSION=$VERSION" + exit 1 +} + +missing() { + echo "Error: some image(s) missing from registry" + echo "ENV:" + echo " NS=$NS" + echo " VERSION=$VERSION" + exit 1 +} + +failed() { + echo "Error: multiarch manifest push failed" + echo "ENV:" + echo " NS=$NS" + echo " VERSION=$VERSION" + exit 1 +} + +USER=${1:-nobody} +PASSWORD=${2:-nohow} +NS=${NS:-hyperledger} +VERSION=${BASE_VERSION:-1.1.0} + +if [ "$#" -ne 2 ]; then + usage +fi + +# verify that manifest-tool is installed and found on PATH +which manifest-tool +if [ "$?" -ne 0 ]; then + echo "manifest-tool not installed or not found on PATH" + exit 1 +fi + +IMAGES="fabric-peer fabric-orderer fabric-ccenv fabric-tools" + +# check that all images have been published +for image in ${IMAGES}; do + docker pull ${NS}/${image}:amd64-${VERSION} || missing + docker pull ${NS}/${image}:s390x-${VERSION} || missing +done + +# push the multiarch manifest and tag with just $VERSION and 'latest' +for image in ${IMAGES}; do + manifest-tool --username ${USER} --password ${PASSWORD} push from-args\ + --platforms linux/amd64,linux/s390x --template "${NS}/${image}:ARCH-${VERSION}"\ + --target "${NS}/${image}:${VERSION}" + manifest-tool --username ${USER} --password ${PASSWORD} push from-args\ + --platforms linux/amd64,linux/s390x --template "${NS}/${image}:ARCH-${VERSION}"\ + --target "${NS}/${image}:latest" +done + +# test that manifest is working as expected +for image in ${IMAGES}; do + docker pull ${NS}/${image}:${VERSION} || failed + docker pull ${NS}/${image}:latest || failed +done + +echo "Successfully pushed multiarch manifest" +exit 0