fat-manifest updates fat-manifest updates Making create-manifest-list.sh executable fixing travis failure fixing fat-manifests fat-manifest fat-manifest fat-manifest updates fat-manifests fat-manifest updates manifest-list updates fat-manifest updating fat-manifests fat-manifests
90 lines
2.5 KiB
Bash
Executable File
90 lines
2.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# © Copyright IBM Corporation 2020
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
set -e
|
|
|
|
usage="
|
|
Usage: create-image-manifest.sh -r hyc-mq-container-team-docker-local.artifactory.swg-devops.com -n foo -i ibm-mqadvanced-server-dev -t test -d \"sha256:038ad492532b099c324b897ce9da31ae0be312a1d0063f6456f2e3143cc4f4b8 sha256:754f466cf2cfc5183ac705689ce6720f27fecd07c97970ba3ec48769acba067d\"
|
|
|
|
Where:
|
|
-r - The image registry hostname
|
|
-n - The image registry namespace
|
|
-i - The image name
|
|
-t - The desired top level manifest tag
|
|
-d - A space separated list of sha256 image digests to be included
|
|
"
|
|
|
|
GREEN="\033[32m"
|
|
RED="\033[31m"
|
|
BLUE="\033[34m"
|
|
PURPLE="\033[35m"
|
|
AQUA="\033[36m"
|
|
|
|
END="\033[0m"
|
|
|
|
UNDERLINE="\033[4m"
|
|
BOLD="\033[1m"
|
|
ITALIC="\033[3m"
|
|
TITLE=${BLUE}${BOLD}${UNDERLINE}
|
|
STEPTITLE=${BLUERIGHTARROW}" "${BOLD}${ITALIC}
|
|
SUBSTEPTITLE=${MINIARROW}${MINIARROW}${MINIARROW}" "${ITALIC}
|
|
RIGHTARROW="\xE2\x96\xB6"
|
|
MINIARROW="\xE2\x96\xBB"
|
|
BLUERIGHTARROW=${BLUE}${RIGHTARROW}${END}
|
|
GREENRIGHTARROW=${GREEN}${RIGHTARROW}${END}
|
|
|
|
ERROR=${RED}
|
|
|
|
TICK="\xE2\x9C\x94"
|
|
CROSS="\xE2\x9C\x97"
|
|
GREENTICK=${GREEN}${TICK}${END}
|
|
REDCROSS=${RED}${CROSS}${END}
|
|
|
|
|
|
SPACER="\n\n"
|
|
|
|
while getopts r:n:i:t:d:h:u:p: flag
|
|
do
|
|
case "${flag}" in
|
|
r) REGISTRY=${OPTARG};;
|
|
n) NAMESPACE=${OPTARG};;
|
|
i) IMAGE=${OPTARG};;
|
|
t) TAG=${OPTARG};;
|
|
d) DIGESTS=${OPTARG};;
|
|
u) USER=${OPTARG};;
|
|
p) CREDENTIAL=${OPTARG};;
|
|
esac
|
|
done
|
|
|
|
if [[ -z $REGISTRY || -z $NAMESPACE || -z $IMAGE || -z $TAG || -z $DIGESTS ]] ; then
|
|
printf "${REDCROSS} ${ERROR}Missing parameter!${END}\n"
|
|
printf "${ERROR}$usage${END}\n"
|
|
exit 1
|
|
fi
|
|
|
|
# Docker CLI manifest commands require experimental features to be turned on
|
|
export DOCKER_CLI_EXPERIMENTAL=enabled
|
|
|
|
MANIFESTS=""
|
|
for digest in $DIGESTS ; do \
|
|
MANIFESTS+=" $REGISTRY/$NAMESPACE/$IMAGE@$digest"
|
|
done
|
|
|
|
docker login $REGISTRY -u $USER -p $CREDENTIAL
|
|
docker manifest create $REGISTRY/$NAMESPACE/$IMAGE:$TAG --amend $MANIFESTS > /dev/null
|
|
MANIFEST_DIGEST=$(docker manifest push $REGISTRY/$NAMESPACE/$IMAGE:$TAG)
|
|
|
|
echo $MANIFEST_DIGEST |