1+ #! /bin/bash
2+
3+ # © Copyright IBM Corporation 2024
4+ #
5+ # Licensed under the Apache License, Version 2.0 (the "License");
6+ # you may not use this file except in compliance with the License.
7+ # You may obtain a copy of the License at
8+ #
9+ # http://www.apache.org/licenses/LICENSE-2.0
10+ #
11+ # Unless required by applicable law or agreed to in writing, software
12+ # distributed under the License is distributed on an "AS IS" BASIS,
13+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+ # See the License for the specific language governing permissions and
15+ # limitations under the License.
16+
17+ set -e
18+
19+ BINPATH=" /usr/local/bin/"
20+ CV_YQ_VERSION=3.3.2
21+ echo " Installing yq..."
22+ curl -LO " https://github.com/mikefarah/yq/releases/download/$CV_YQ_VERSION /yq_linux_amd64"
23+ chmod +x yq_linux_amd64
24+ sudo mv yq_linux_amd64 ${BINPATH} /yq
25+
26+ usage="
27+ Usage: create-image-manifest.sh -f image-manifest.yaml
28+ Where:
29+ -f - The file name to use
30+ "
31+
32+ GREEN=" \033[32m"
33+ RED=" \033[31m"
34+ BLUE=" \033[34m"
35+ PURPLE=" \033[35m"
36+ AQUA=" \033[36m"
37+
38+ END=" \033[0m"
39+
40+ UNDERLINE=" \033[4m"
41+ BOLD=" \033[1m"
42+ ITALIC=" \033[3m"
43+ TITLE=" \n" ${BLUE}${BOLD}${UNDERLINE}
44+ STEPTITLE=${BLUERIGHTARROW} " " ${BOLD}${ITALIC}
45+ SUBSTEPTITLE=${MINIARROW}${MINIARROW}${MINIARROW} " " ${ITALIC}
46+ RIGHTARROW=" \xE2\x96\xB6"
47+ MINIARROW=" \xE2\x96\xBB"
48+ BLUERIGHTARROW=${BLUE}${RIGHTARROW}${END}
49+ GREENRIGHTARROW=${GREEN}${RIGHTARROW}${END}
50+
51+ ERROR=${RED}
52+
53+ TICK=" \xE2\x9C\x94"
54+ CROSS=" \xE2\x9C\x97"
55+ GREENTICK=${GREEN}${TICK}${END}
56+ REDCROSS=${RED}${CROSS}${END}
57+
58+
59+ SPACER=" \n\n"
60+
61+ MQ_VERSION_TAG=
62+ REGISTRY_USER=
63+ REGISTRY_CREDENTIAL=
64+ REGISTRY_HOSTNAME=
65+ REGISTRY_NAMESPACE=
66+
67+
68+ MQ_IMAGE_DEVSERVER_AMD64_DIGEST=
69+ MQ_IMAGE_DEVSERVER_S390X_DIGEST=
70+ MQ_IMAGE_DEVSERVER_PPC64LE_DIGEST=
71+ MANIFEST_SHA_DEV=
72+
73+ MQ_IMAGE_ADVANCEDSERVER_AMD64_DIGEST=
74+ MQ_IMAGE_ADVANCEDSERVER_S390X_DIGEST=
75+ MQ_IMAGE_ADVANCEDSERVER_PPC64LE_DIGEST=
76+ MANIFEST_SHA_ADV=
77+
78+ while getopts f:o:t:u:p:r:n:a:m:s: flag
79+ do
80+ case " ${flag} " in
81+ f) IMAGE_MANIFEST_FILE=${OPTARG} ;;
82+ o) MQ_VERSION_TAG=${OPTARG} ;;
83+ t) MQ_IMAGE_DEVSERVER_AMD64_DIGEST=${OPTARG} ;;
84+ u) MQ_IMAGE_DEVSERVER_S390X_DIGEST=${OPTARG} ;;
85+ p) MQ_IMAGE_DEVSERVER_PPC64LE_DIGEST=${OPTARG} ;;
86+ r) MANIFEST_SHA_DEV=${OPTARG} ;;
87+ n) MQ_IMAGE_ADVANCEDSERVER_AMD64_DIGEST=${OPTARG} ;;
88+ a) MQ_IMAGE_ADVANCEDSERVER_S390X_DIGEST=${OPTARG} ;;
89+ m) MQ_IMAGE_ADVANCEDSERVER_PPC64LE_DIGEST=${OPTARG} ;;
90+ s) MANIFEST_SHA_ADV=${OPTARG} ;;
91+ esac
92+ done
93+
94+ MQ_TAG_REMOVED_DOT=$( echo " $MQ_VERSION_TAG " | awk -F' [.-]' ' {print $1 "_" $2 "_" $3 "_" $4 "_" $5}' )
95+ MQ_VERSION=$( echo " $MQ_VERSION_TAG " | awk -F' [.-]' ' {print $1 "." $2 "." $3 "." $4 "-" $5}' )
96+
97+ PRODUCTION_TAG=" ${MQ_VERSION} -${APAR_NUMBER} -${FIX_NUMBER} "
98+
99+ if [[ -z $IMAGE_MANIFEST_FILE ]] ; then
100+ printf " ${REDCROSS} ${ERROR} You must specify a filename${END} \n"
101+ printf " ${ERROR} $usage ${END} \n"
102+ exit 1
103+ fi
104+
105+ DIR_PATH=$( dirname " $IMAGE_MANIFEST_FILE " )
106+ # Create the directory if it does not exist
107+ if [ ! -d " $DIR_PATH " ]; then
108+ echo " Directory does not exist. Creating directory: $DIR_PATH "
109+ mkdir -p " $DIR_PATH "
110+
111+ # Check if the directory creation succeeded
112+ if [ $? -ne 0 ]; then
113+ echo " Failed to create directory: $DIR_PATH "
114+ exit 1
115+ fi
116+ fi
117+
118+ rm -f $IMAGE_MANIFEST_FILE
119+ touch $IMAGE_MANIFEST_FILE
120+
121+
122+ DATE_STAMP=` date --utc ' +%Y-%m-%dT%H:%M:%S.%3N%Z' 2>&1 ` || EXIT_CODE=$?
123+ if [ " ${EXIT_CODE} " != " 0" ]; then
124+ DATE_STAMP=` date -u ' +%Y-%m-%dT%H:%M:%S%Z' `
125+ fi
126+
127+ echo " Generating build manifest process started"
128+
129+ yq write -i $IMAGE_MANIFEST_FILE metadata.createdAt $DATE_STAMP
130+ yq write -i $IMAGE_MANIFEST_FILE metadata.commitId $TRAVIS_COMMIT
131+ yq write -i $IMAGE_MANIFEST_FILE metadata.travisBuildId $TRAVIS_BUILD_ID
132+ yq write -i $IMAGE_MANIFEST_FILE metadata.travisBuildUrl $TRAVIS_BUILD_WEB_URL
133+ yq write -i $IMAGE_MANIFEST_FILE metadata.stage dev_ifix
134+ yq write -i $IMAGE_MANIFEST_FILE images.operands.mq.${MQ_TAG_REMOVED_DOT} .ibmMQAdvancedServer.name ibm-mqadvanced-server
135+ yq write -i $IMAGE_MANIFEST_FILE images.operands.mq.${MQ_TAG_REMOVED_DOT} .ibmMQAdvancedServer.productionName ibm-mqadvanced-server
136+ yq write -i $IMAGE_MANIFEST_FILE images.operands.mq.${MQ_TAG_REMOVED_DOT} .ibmMQAdvancedServer.productionTag $PRODUCTION_TAG
137+ yq write -i $IMAGE_MANIFEST_FILE images.operands.mq.${MQ_TAG_REMOVED_DOT} .ibmMQAdvancedServer.tag $MQ_VERSION_TAG
138+ yq write -i $IMAGE_MANIFEST_FILE images.operands.mq.${MQ_TAG_REMOVED_DOT} .ibmMQAdvancedServer.digests.amd64 $MQ_IMAGE_ADVANCEDSERVER_AMD64_DIGEST
139+ yq write -i $IMAGE_MANIFEST_FILE images.operands.mq.${MQ_TAG_REMOVED_DOT} .ibmMQAdvancedServer.digests.s390x $MQ_IMAGE_ADVANCEDSERVER_S390X_DIGEST
140+ yq write -i $IMAGE_MANIFEST_FILE images.operands.mq.${MQ_TAG_REMOVED_DOT} .ibmMQAdvancedServer.digests.ppc64le $MQ_IMAGE_ADVANCEDSERVER_PPC64LE_DIGEST
141+ yq write -i $IMAGE_MANIFEST_FILE images.operands.mq.${MQ_TAG_REMOVED_DOT} .ibmMQAdvancedServer.digests.fatManifest $MANIFEST_SHA_ADV
142+ if [ " $PROMOTE_DEVELOPER_IMAGE_IFIX " = true ]; then
143+ yq write -i $IMAGE_MANIFEST_FILE images.operands.mq.${MQ_TAG_REMOVED_DOT} .ibmMQAdvancedServerDev.name ibm-mqadvanced-server-dev
144+ yq write -i $IMAGE_MANIFEST_FILE images.operands.mq.${MQ_TAG_REMOVED_DOT} .ibmMQAdvancedServerDev.productionName mq
145+ yq write -i $IMAGE_MANIFEST_FILE images.operands.mq.${MQ_TAG_REMOVED_DOT} .ibmMQAdvancedServerDev.productionTag $PRODUCTION_TAG
146+ yq write -i $IMAGE_MANIFEST_FILE images.operands.mq.${MQ_TAG_REMOVED_DOT} .ibmMQAdvancedServerDev.tag $MQ_VERSION_TAG
147+ yq write -i $IMAGE_MANIFEST_FILE images.operands.mq.${MQ_TAG_REMOVED_DOT} .ibmMQAdvancedServerDev.digests.amd64 $MQ_IMAGE_DEVSERVER_AMD64_DIGEST
148+ yq write -i $IMAGE_MANIFEST_FILE images.operands.mq.${MQ_TAG_REMOVED_DOT} .ibmMQAdvancedServerDev.digests.s390x $MQ_IMAGE_DEVSERVER_S390X_DIGEST
149+ yq write -i $IMAGE_MANIFEST_FILE images.operands.mq.${MQ_TAG_REMOVED_DOT} .ibmMQAdvancedServerDev.digests.ppc64le $MQ_IMAGE_DEVSERVER_PPC64LE_DIGEST
150+ yq write -i $IMAGE_MANIFEST_FILE images.operands.mq.${MQ_TAG_REMOVED_DOT} .ibmMQAdvancedServerDev.digests.fatManifest $MANIFEST_SHA_DEV
151+ fi
152+ echo " Generating build manifest process completed"
0 commit comments