3 # ================================================================================
4 # Copyright (c) 2017-2020 AT&T Intellectual Property. All rights reserved.
5 # ================================================================================
6 # Licensed under the Apache License, Version 2.0 (the "License");
7 # you may not use this file except in compliance with the License.
8 # You may obtain a copy of the License at
10 # http://www.apache.org/licenses/LICENSE-2.0
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
17 # ============LICENSE_END=========================================================
20 #MVN_PROJECT_MODULEID="$1"
22 #PROJECT_ROOT=$(dirname $0)
24 FQDN="${MVN_PROJECT_GROUPID}.${MVN_PROJECT_ARTIFACTID}"
25 if [ "$MVN_PROJECT_MODULEID" == "__" ]; then
26 MVN_PROJECT_MODULEID=""
29 if [[ "$MVN_PROJECT_VERSION" == *SNAPSHOT ]]; then
30 echo "=> for SNAPSHOT artifact build"
31 MVN_DEPLOYMENT_TYPE='SNAPSHOT'
33 echo "=> for STAGING/RELEASE artifact build"
34 MVN_DEPLOYMENT_TYPE='STAGING'
36 echo "MVN_DEPLOYMENT_TYPE is [$MVN_DEPLOYMENT_TYPE]"
39 TIMESTAMP=$(date +%C%y%m%dT%H%M%S)
41 # expected environment variables
42 if [ -z "${MVN_NEXUSPROXY}" ]; then
43 echo "MVN_NEXUSPROXY environment variable not set. Cannot proceed"
46 MVN_NEXUSPROXY_HOST=$(echo "$MVN_NEXUSPROXY" |cut -f3 -d'/' | cut -f1 -d':')
47 echo "=> Nexus Proxy at $MVN_NEXUSPROXY_HOST, $MVN_NEXUSPROXY"
49 if [ -z "$WORKSPACE" ]; then
53 export SETTINGS_FILE=${SETTINGS_FILE:-$HOME/.m2/settings.xml}
55 RELEASE_TAG=${MVN_RELEASE_TAG:-R7}
56 if [ "$RELEASE_TAG" == "R1" ]; then
61 # mvn phase in life cycle
64 echo "MVN_RELEASE_TAG is [$MVN_RELEASE_TAG]"
65 echo "MVN_PROJECT_MODULEID is [$MVN_PROJECT_MODULEID]"
66 echo "MVN_PHASE is [$MVN_PHASE]"
67 echo "MVN_PROJECT_GROUPID is [$MVN_PROJECT_GROUPID]"
68 echo "MVN_PROJECT_ARTIFACTID is [$MVN_PROJECT_ARTIFACTID]"
69 echo "MVN_PROJECT_VERSION is [$MVN_PROJECT_VERSION]"
70 echo "MVN_NEXUSPROXY is [$MVN_NEXUSPROXY]"
71 echo "MVN_RAWREPO_BASEURL_UPLOAD is [$MVN_RAWREPO_BASEURL_UPLOAD]"
72 echo "MVN_RAWREPO_BASEURL_DOWNLOAD is [$MVN_RAWREPO_BASEURL_DOWNLOAD]"
73 MVN_RAWREPO_HOST=$(echo "$MVN_RAWREPO_BASEURL_UPLOAD" | cut -f3 -d'/' |cut -f1 -d':')
74 echo "MVN_RAWREPO_HOST is [$MVN_RAWREPO_HOST]"
75 echo "MVN_RAWREPO_SERVERID is [$MVN_RAWREPO_SERVERID]"
76 echo "MVN_DOCKERREGISTRY_SNAPSHOT is [$MVN_DOCKERREGISTRY_SNAPSHOT]"
77 echo "MVN_DOCKERREGISTRY_PUBLIC is [$MVN_DOCKERREGISTRY_PUBLIC]"
78 echo "MVN_DOCKERREGISTRY_RELEASE is [$MVN_DOCKERREGISTRY_RELEASE]"
79 echo "MVN_PYPISERVER_SERVERID [$MVN_PYPISERVER_SERVERID]"
80 echo "MVN_PYPISERVER_BASEURL is [$MVN_PYPISERVER_BASEURL]"
84 clean_templated_files()
86 TEMPLATE_FILES=$(find . -name "*-template")
87 for F in $TEMPLATE_FILES; do
88 F2=$(echo "$F" | sed 's/-template$//')
94 TOX_FILES=$(find . -name ".tox")
95 TOX_FILES="$TOX_FILES $(find . -name 'venv-tox')"
96 for F in $TOX_FILES; do
105 if [ -z "$RELEASE_TAG" ]; then
106 export ONAPTEMPLATE_RAWREPOURL_org_onap_dcaegen2_releases="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.dcaegen2/releases"
107 export ONAPTEMPLATE_RAWREPOURL_org_onap_dcaegen2_snapshots="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.dcaegen2/snapshots"
108 export ONAPTEMPLATE_RAWREPOURL_org_onap_dcaegen2_platform_plugins_releases="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.dcaegen2.platform.plugins/releases"
109 export ONAPTEMPLATE_RAWREPOURL_org_onap_dcaegen2_platform_plugins_snapshots="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.dcaegen2.platform.plugins/snapshots"
110 export ONAPTEMPLATE_RAWREPOURL_org_onap_dcaegen2_platform_blueprints_releases="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.dcaegen2.platform.blueprints/releases"
111 export ONAPTEMPLATE_RAWREPOURL_org_onap_dcaegen2_platform_blueprints_snapshots="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.dcaegen2.platform.blueprints/snapshots"
113 export ONAPTEMPLATE_RAWREPOURL_org_onap_dcaegen2_releases="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.dcaegen2/$RELEASE_TAG"
114 export ONAPTEMPLATE_RAWREPOURL_org_onap_dcaegen2_snapshots="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.dcaegen2/$RELEASE_TAG"
115 export ONAPTEMPLATE_RAWREPOURL_org_onap_dcaegen2_platform_plugins_releases="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.dcaegen2.platform.plugins/$RELEASE_TAG"
116 export ONAPTEMPLATE_RAWREPOURL_org_onap_dcaegen2_platform_plugins_snapshots="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.dcaegen2.platform.plugins/$RELEASE_TAG"
117 export ONAPTEMPLATE_RAWREPOURL_org_onap_dcaegen2_platform_blueprints_releases="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.dcaegen2.platform.blueprints/$RELEASE_TAG"
118 export ONAPTEMPLATE_RAWREPOURL_org_onap_dcaegen2_platform_blueprints_snapshots="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.dcaegen2.platform.blueprints/$RELEASE_TAG"
122 export ONAPTEMPLATE_PYPIURL_org_onap_dcaegen2="${MVN_PYPISERVER_BASEURL}"
124 # docker registry templates are for poll, so use PUBLIC registry
125 export ONAPTEMPLATE_DOCKERREGURL_org_onap_dcaegen2_releases="${MVN_DOCKERREGISTRY_PUBLIC}"
126 export ONAPTEMPLATE_DOCKERREGURL_org_onap_dcaegen2_snapshots="${MVN_DOCKERREGISTRY_PUBLIC}"
129 export ONAPTEMPLATE_MVN_org_onap_dcaegen2_analytics_tca_snapshots="${MVN_NEXUSPROXY}/service/local/repositories/snapshots/content/org/onap/dcaegen2/analytics/tca"
130 export ONAPTEMPLATE_MVN_org_onap_dcaegen2_analytics_tca_staging="${MVN_NEXUSPROXY}/service/local/repositories/staging/content/org/onap/dcaegen2/analytics/tca"
131 export ONAPTEMPLATE_MVN_org_onap_dcaegen2_analytics_tca_releases="${MVN_NEXUSPROXY}/service/local/repositories/releases/content/org/onap/dcaegen2/analytics/tca"
134 export ONAPTEMPLATE_STANDARD_INPUTS_TYPES=" # standard inputs list
162 TEMPLATES=$(env |grep ONAPTEMPLATE | sed 's/=.*//' | sort -u)
163 if [ -z "$TEMPLATES" ]; then
164 echo "No template variables found!"
168 TEMPLATE_FILES=$(find . -name "*-template")
169 for F in $TEMPLATE_FILES; do
170 F2=$(echo "$F" | sed 's/-template$//')
174 echo "====> Resolving the following template from environment variables "
176 for KEY in $TEMPLATES; do
177 VALUE1=$(eval 'echo "$'"$KEY"'"' | sed 1q)
178 VALUE2=$(eval 'echo "$'"$KEY"'"' | sed -e 's/\//\\\//g' -e 's/$/\\/' -e '$s/\\$//')
180 echo "======> Resolving template $KEY to value $VALUE1 for file $F2"
181 sed -i "s/{{[[:space:]]*$KEY[[:space:]]*}}/$VALUE2/g" "$F2"
184 echo "====> Done template resolving"
189 # make certain that the type references exist
191 trap 'rm -f $TMP' 0 1 2 3 15
193 echo Verify that all of the import URLs are correct
194 find . -name '*-template' | sed -e 's/-template$//' |
197 egrep '^ - .?https?://' < "$file"
198 done | awk '{print $2}' | sed -e 's/"//g' | sort -u |
201 curl -L -w '%{http_code}' -s -o /dev/null "$url" > "$TMP"
204 * ) echo ">>>>>>>>>>>>>>>> $url not found <<<<<<<<<<<<<<<<" ;;
208 echo Verify that the inputs are correct
209 PATH=$PATH:$PWD/check-blueprint-vs-input/bin
210 find . -name '*-template' | sed -e 's/-template$//' |
213 check-blueprint-vs-input -b "$blueprint" -i check-blueprint-vs-input/lib/sample-inputs.yaml || true
222 TOXINIS=$(find . -name "tox.ini")
223 for TOXINI in "${TOXINIS[@]}"; do
224 DIR=$(echo "$TOXINI" | rev | cut -f2- -d'/' | rev)
225 cd "${CURDIR}/${DIR}"
226 rm -rf ./venv-tox ./.tox
227 virtualenv ./venv-tox
228 source ./venv-tox/bin/activate
230 pip install --upgrade pip
231 pip install --upgrade setuptools
232 pip install --upgrade argparse
238 rm -rf ./venv-tox ./.tox
244 rm -rf ./*.wgn venv-pkg
245 SETUPFILES=$(find . -name "setup.py")
247 virtualenv ./venv-pkg
248 source ./venv-pkg/bin/activate
249 pip install --upgrade pip
253 for SETUPFILE in $SETUPFILES; do
254 PLUGIN_DIR=$(dirname "$SETUPFILE")
255 PLUGIN_NAME=$(grep 'name[[:space:]]*=' "$SETUPFILE" | cut -f2 -d'=' | sed 's/[^0-9a-zA-Z\.]*//g')
256 PLUGIN_VERSION=$(grep 'version[[:space:]]*=' "$SETUPFILE" | cut -f2 -d'=' | sed 's/[^0-9\.]*//g')
258 echo "In $PLUGIN_DIR, build plugin $PLUGIN_NAME, version $PLUGIN_VERSION"
260 wagon create -r "${PLUGIN_DIR}/requirements.txt" --format tar.gz "${PLUGIN_DIR}"
262 PKG_FILE_NAMES=( "${PLUGIN_NAME}-${PLUGIN_VERSION}"*.wgn )
263 echo Built package: "${PKG_FILE_NAMES[@]}"
271 build_archives_for_wagons()
273 rm -rf ./*.tgz ./*.zip venv-pkg
275 SETUPFILES=$(find "$(pwd)" -name "setup.py")
277 for SETUPFILE in $SETUPFILES; do
278 PLUGIN_FULL_DIR=$(dirname "$SETUPFILE")
279 PLUGIN_BASE_DIR=$(basename "$PLUGIN_FULL_DIR")
280 PLUGIN_NAME=$(grep 'name[[:space:]]*=' "$SETUPFILE" | cut -f2 -d'=' | sed 's/[^0-9a-zA-Z\.]*//g')
281 PLUGIN_VERSION=$(grep 'version[[:space:]]*=' "$SETUPFILE" | cut -f2 -d'=' | sed 's/[^0-9\.]*//g')
283 cd "${PLUGIN_FULL_DIR}"/..
284 echo "In $(pwd), build plugin zip $PLUGIN_NAME, version $PLUGIN_VERSION"
286 zip -r "${PLUGIN_NAME}-${PLUGIN_VERSION}.zip" "./${PLUGIN_BASE_DIR}"
287 tar -czvf "${PLUGIN_NAME}-${PLUGIN_VERSION}.tgz" "./${PLUGIN_BASE_DIR}"
289 echo "Built archives for package ${PLUGIN_NAME}-${PLUGIN_VERSION} at $(pwd)"
297 # Extract the username and password to the nexus repo from the settings file
298 USER=$(xpath "$SETTINGS_FILE" "//servers/server[id='$MVN_RAWREPO_SERVERID']/username/text()")
299 PASS=$(xpath "$SETTINGS_FILE" "//servers/server[id='$MVN_RAWREPO_SERVERID']/password/text()")
301 echo "machine $MVN_RAWREPO_HOST login $USER password $PASS" > "$NETRC"
303 REPO="$MVN_RAWREPO_BASEURL_UPLOAD"
306 EXT=$(echo "$OUTPUT_FILE" | rev |cut -f1 -d '.' |rev)
307 if [ "$EXT" == 'yaml' ]; then
308 OUTPUT_FILE_TYPE='text/x-yaml'
309 elif [ "$EXT" == 'sh' ]; then
310 OUTPUT_FILE_TYPE='text/x-shellscript'
311 elif [ "$EXT" == 'gz' ]; then
312 OUTPUT_FILE_TYPE='application/gzip'
313 elif [ "$EXT" == 'tgz' ]; then
314 OUTPUT_FILE_TYPE='application/gzip'
315 elif [ "$EXT" == 'zip' ]; then
316 OUTPUT_FILE_TYPE='application/zip'
317 elif [ "$EXT" == 'wgn' ]; then
318 OUTPUT_FILE_TYPE='application/gzip'
320 OUTPUT_FILE_TYPE='application/octet-stream'
323 # for multi module projects, the raw repo path must match with project name, not project + module
324 # FQDN is project + module
325 # GROUPID is project name
326 if [ "$MVN_PROJECT_ARTIFACTID" == "$MVN_PROJECT_MODULEID" ]; then
327 PROJECT_NAME=${MVN_PROJECT_GROUPID}
332 if [ -z "$RELEASE_TAG" ]; then
333 SEND_TO="${REPO}/${PROJECT_NAME}"
335 SEND_TO="${REPO}/${PROJECT_NAME}/${RELEASE_TAG}"
338 if [ ! -z "$2" ]; then
339 SEND_TO="$SEND_TO/$2"
342 echo "Sending ${OUTPUT_FILE} to Nexus: ${SEND_TO}"
343 curl -vkn --netrc-file "${NETRC}" --upload-file "${OUTPUT_FILE}" -X PUT -H "Content-Type: $OUTPUT_FILE_TYPE" "${SEND_TO}/${OUTPUT_FILE}-${TIMESTAMP}"
344 curl -vkn --netrc-file "${NETRC}" --upload-file "${OUTPUT_FILE}" -X PUT -H "Content-Type: $OUTPUT_FILE_TYPE" "${SEND_TO}/${OUTPUT_FILE}"
347 upload_wagon_archives()
349 SETUPFILES=$(find "$(pwd)" -name "setup.py")
351 for SETUPFILE in $SETUPFILES; do
352 PLUGIN_FULL_DIR=$(dirname "$SETUPFILE")
353 PLUGIN_BASE_DIR=$(basename "$PLUGIN_FULL_DIR")
354 PLUGIN_NAME=$(grep 'name[[:space:]]*=' "$SETUPFILE" | cut -f2 -d'=' | sed 's/[^0-9a-zA-Z\.]*//g')
355 PLUGIN_VERSION=$(grep 'version[[:space:]]*=' "$SETUPFILE" | cut -f2 -d'=' | sed 's/[^0-9\.]*//g')
357 cd "${PLUGIN_FULL_DIR}"/..
358 echo "In $(pwd), upload zip archive for $PLUGIN_NAME, version $PLUGIN_VERSION"
359 ARCHIVE_FILE_NAME="${PLUGIN_NAME}-${PLUGIN_VERSION}.zip"
360 if [ -z "$ARCHIVE_FILE_NAME" ]; then
361 echo "!!! No zip archive file found ${ARCHIVE_FILE_NAME}"
364 upload_raw_file "${ARCHIVE_FILE_NAME}" "${PLUGIN_NAME}/${PLUGIN_VERSION}"
366 echo "In $(pwd), upload tgz archive for $PLUGIN_NAME, version $PLUGIN_VERSION"
367 ARCHIVE_FILE_NAME="${PLUGIN_NAME}-${PLUGIN_VERSION}.tgz"
368 if [ -z "$ARCHIVE_FILE_NAME" ]; then
369 echo "!!! No tgz archive file found ${ARCHIVE_FILE_NAME}"
372 upload_raw_file "${ARCHIVE_FILE_NAME}" "${PLUGIN_NAME}/${PLUGIN_VERSION}"
378 upload_wagons_and_type_yamls()
380 SETUPFILES=$(find . -name "setup.py")
383 for SETUPFILE in $SETUPFILES; do
384 PLUGIN_DIR=$(dirname "$SETUPFILE")
385 PLUGIN_NAME=$(grep 'name[[:space:]]*=' "$SETUPFILE" | cut -f2 -d'=' | sed 's/[^0-9a-zA-Z\.]*//g')
386 PLUGIN_VERSION=$(grep 'version[[:space:]]*=' "$SETUPFILE" | cut -f2 -d'=' | sed 's/[^0-9\.]*//g')
387 PLUGIN_VERSION_MAJOR=$(echo "$PLUGIN_VERSION" | cut -f1 -d'.')
388 PLUGIN_VERSION_MAJOR_MINOR=$(echo "$PLUGIN_VERSION" | cut -f1-2 -d'.')
390 echo "Found setup file in $PLUGIN_DIR, for plugin $PLUGIN_NAME version $PLUGIN_VERSION"
392 TYPEFILE_NAME=$( grep -l "package_name[[:space:]]*:[[:space:]]*${PLUGIN_NAME}" * 2>/dev/null || true )
393 if [ -z "$TYPEFILE_NAME" ]; then
394 echo "!!! No typefile found with matching package name $PLUGIN_NAME"
397 NEWFILENAME="${PLUGIN_NAME}"_types.yaml
398 if [ "$TYPEFILE_NAME" != "$NEWFILENAME" ]; then
399 echo "copy typefile to standard naming"
400 cp -f "$TYPEFILE_NAME" "$NEWFILENAME"
403 TYPEFILE_PACKAGE_VERSION=$(grep 'package_version[[:space:]]*:' "$TYPEFILE_NAME" |cut -f2 -d ':' |sed -r 's/\s+//g')
404 WAGONFILE_NAME=$(ls -1 "${PLUGIN_NAME}"-"${TYPEFILE_PACKAGE_VERSION}"-*.wgn)
405 if [ -z "$WAGONFILE_NAME" ]; then
406 echo "!!! No wagonfile found with matching package name and version as required in typefile: "
407 echo " $TYPEFILE_NAME plugin $PLUGIN_NAME package version ${TYPEFILE_PACKAGE_VERSION}"
411 upload_raw_file "${NEWFILENAME}" "${PLUGIN_NAME}/${PLUGIN_VERSION}"
412 upload_raw_file "${WAGONFILE_NAME}" "${PLUGIN_NAME}/${PLUGIN_VERSION}"
414 rm -r "$WAGONFILE_NAME"
415 if [ "$TYPEFILE_NAME" != "$NEWFILENAME" ]; then
421 upload_files_of_extension()
423 FILES=$(ls -1 ./*."$1")
425 upload_raw_file "$F" "$2"
428 upload_files_of_extension_recursively()
430 FILES=$(find . -name "*.$1")
432 upload_raw_file "$F" "$2"
437 generate_pypirc_then_publish()
440 USER=$(xpath "$SETTINGS_FILE" "//servers/server[id='$MVN_PYPISERVER_SERVERID']/username/text()")
441 PASS=$(xpath "$SETTINGS_FILE" "//servers/server[id='$MVN_PYPISERVER_SERVERID']/password/text()")
443 if [[ "$MVN_PYPISERVER_BASEURL" != */ ]]; then
444 MVN_PYPISERVER_BASEURL="${MVN_PYPISERVER_BASEURL}/"
448 cat > ~/.pypirc <<EOL
451 $MVN_PYPISERVER_SERVERID
453 [$MVN_PYPISERVER_SERVERID]
454 repository: $MVN_PYPISERVER_BASEURL
459 # this may fail if a package of same version exists
460 python setup.py sdist register -r "$MVN_PYPISERVER_SERVERID" upload -r "$MVN_PYPISERVER_SERVERID"
466 # following the https://wiki.onap.org/display/DW/Independent+Versioning+and+Release+Process
467 #IndependentVersioningandReleaseProcess-StandardizedDockerTagging
468 build_and_push_docker()
471 #IMAGENAME="onap/${FQDN}.${MVN_PROJECT_MODULEID}"
473 ENDID=$(echo $FQDN | rev | cut -f1 -d '.' |rev)
474 if [ "$ENDID" == "${MVN_PROJECT_MODULEID}" ]; then
475 #IMAGENAME="onap/${FQDN/org.onap./}"
476 IMAGENAME="onap/${FQDN}"
478 #IMAGENAME="onap/${FQDN/org.onap./}.${MVN_PROJECT_MODULEID}"
479 IMAGENAME="onap/${FQDN}.${MVN_PROJECT_MODULEID}"
482 IMAGENAME=$(echo "$IMAGENAME" | sed -e 's/_*$//g' -e 's/\.*$//g')
483 IMAGENAME=$(echo "$IMAGENAME" | tr '[:upper:]' '[:lower:]')
485 # use the major and minor version of the MVN artifact version as docker image version
486 VERSION="${MVN_PROJECT_VERSION//[^0-9.]/}"
487 VERSION2=$(echo "$VERSION" | cut -f1-2 -d'.')
489 LFQI="${IMAGENAME}:${VERSION}-${TIMESTAMP}"Z
490 # build a docker image
491 docker build --rm -f ./Dockerfile -t "${LFQI}" ./
493 # all local builds push to SNAPSHOT repo
495 if [ $MVN_DEPLOYMENT_TYPE == "SNAPSHOT" ]; then
496 REPO=$MVN_DOCKERREGISTRY_SNAPSHOT
497 elif [ $MVN_DEPLOYMENT_TYPE == "STAGING" ]; then
498 REPO=$MVN_DOCKERREGISTRY_SNAPSHOT
500 echo "Fail to determine DEPLOYMENT_TYPE"
501 REPO=$MVN_DOCKERREGISTRY_SNAPSHOT
503 echo "DEPLOYMENT_TYPE is: $MVN_DEPLOYMENT_TYPE, repo is $REPO"
505 if [ ! -z "$REPO" ]; then
506 USER=$(xpath "$SETTINGS_FILE" "//servers/server[id='$REPO']/username/text()")
507 PASS=$(xpath "$SETTINGS_FILE" "//servers/server[id='$REPO']/password/text()")
508 if [ -z "$USER" ]; then
509 echo "Error: no user provided"
511 if [ -z "$PASS" ]; then
512 echo "Error: no password provided"
514 [ -z "$PASS" ] && PASS_PROVIDED="<empty>" || PASS_PROVIDED="<password>"
515 echo docker login "$REPO" -u "$USER" -p "$PASS_PROVIDED"
518 docker login "$REPO" -u "$USER" -p "$PASS"
521 # local tag is imagename:version-timestamp
523 # three tags are pushed:
524 # {imagename}:{semver}-SNAPSHOT-{timestamp}Z this is what CIMAN-132 asks
525 # {imagename}:{semver} latest of current version, for testing
526 # {imagename}:latest latest of all, used mainly by csit
527 # LFQI="${IMAGENAME}:${VERSION}-${TIMESTAMP}"Z
531 # Updating tags for ${REPO}/${IMAGENAME}:${VERSION} to include STAGING-latest; and adding new tag for major:minor-STAGING-latest
532 PUSHTAGS="${REPO}/${IMAGENAME}:${VERSION}-SNAPSHOT-${TIMESTAMP}Z ${REPO}/${IMAGENAME}:${VERSION2}-STAGING-latest ${REPO}/${IMAGENAME}:${VERSION}-STAGING-latest ${REPO}/${IMAGENAME}:latest"
534 for NEWTAG in ${PUSHTAGS}
536 echo "tagging ${OLDTAG} to ${NEWTAG}"
537 docker tag "${OLDTAG}" "${NEWTAG}"
538 echo "pushing ${NEWTAG}"
539 docker push "${NEWTAG}"