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