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:-R9}
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
233 pip install 'virtualenv==20.0.28'
239 rm -rf ./venv-tox ./.tox
245 rm -rf ./*py27*.wgn venv-pkg
246 SETUPFILES=$(find . -name "setup.py")
248 virtualenv ./venv-pkg
249 source ./venv-pkg/bin/activate
250 pip install --upgrade pip
254 for SETUPFILE in $SETUPFILES; do
255 PLUGIN_DIR=$(dirname "$SETUPFILE")
256 PLUGIN_NAME=$(grep 'name[[:space:]]*=' "$SETUPFILE" | cut -f2 -d'=' | sed 's/[^0-9a-zA-Z\.]*//g')
257 PLUGIN_VERSION=$(grep 'version[[:space:]]*=' "$SETUPFILE" | cut -f2 -d'=' | sed 's/[^0-9\.]*//g')
259 echo "In $PLUGIN_DIR, build plugin $PLUGIN_NAME, version $PLUGIN_VERSION"
261 wagon create -r "${PLUGIN_DIR}/requirements.txt" --format tar.gz "${PLUGIN_DIR}"
263 PKG_FILE_NAMES=( "${PLUGIN_NAME}-${PLUGIN_VERSION}"*.wgn )
264 echo Built package: "${PKG_FILE_NAMES[@]}"
274 rm -rf ./*py36*.wgn venv3-pkg
275 SETUPFILES=$(find . -name "setup.py")
277 # Cloudify support only 3.6
278 virtualenv -p python3.6 ./venv3-pkg
279 source ./venv3-pkg/bin/activate
280 pip install --upgrade pip
284 for SETUPFILE in $SETUPFILES; do
285 PLUGIN_DIR=$(dirname "$SETUPFILE")
286 PLUGIN_NAME=$(grep 'name[[:space:]]*=' "$SETUPFILE" | cut -f2 -d'=' | sed 's/[^0-9a-zA-Z\.]*//g')
287 PLUGIN_VERSION=$(grep 'version[[:space:]]*=' "$SETUPFILE" | cut -f2 -d'=' | sed 's/[^0-9\.]*//g')
289 echo "In $PLUGIN_DIR, build plugin $PLUGIN_NAME, version $PLUGIN_VERSION"
291 wagon create -r "${PLUGIN_DIR}/requirements.txt" --format tar.gz "${PLUGIN_DIR}"
293 PKG_FILE_NAMES=( "${PLUGIN_NAME}-${PLUGIN_VERSION}"*.wgn )
294 echo Built package: "${PKG_FILE_NAMES[@]}"
303 build_archives_for_wagons()
305 rm -rf ./*.tgz ./*.zip venv-pkg venv3-pkg
307 SETUPFILES=$(find "$(pwd)" -name "setup.py")
309 for SETUPFILE in $SETUPFILES; do
310 PLUGIN_FULL_DIR=$(dirname "$SETUPFILE")
311 PLUGIN_BASE_DIR=$(basename "$PLUGIN_FULL_DIR")
312 PLUGIN_NAME=$(grep 'name[[:space:]]*=' "$SETUPFILE" | cut -f2 -d'=' | sed 's/[^0-9a-zA-Z\.]*//g')
313 PLUGIN_VERSION=$(grep 'version[[:space:]]*=' "$SETUPFILE" | cut -f2 -d'=' | sed 's/[^0-9\.]*//g')
315 cd "${PLUGIN_FULL_DIR}"/..
316 echo "In $(pwd), build plugin zip $PLUGIN_NAME, version $PLUGIN_VERSION"
318 zip -r "${PLUGIN_NAME}-${PLUGIN_VERSION}.zip" "./${PLUGIN_BASE_DIR}"
319 tar -czvf "${PLUGIN_NAME}-${PLUGIN_VERSION}.tgz" "./${PLUGIN_BASE_DIR}"
321 echo "Built archives for package ${PLUGIN_NAME}-${PLUGIN_VERSION} at $(pwd)"
329 # Extract the username and password to the nexus repo from the settings file
330 USER=$(xpath "$SETTINGS_FILE" "//servers/server[id='$MVN_RAWREPO_SERVERID']/username/text()")
331 PASS=$(xpath "$SETTINGS_FILE" "//servers/server[id='$MVN_RAWREPO_SERVERID']/password/text()")
333 echo "machine $MVN_RAWREPO_HOST login $USER password $PASS" > "$NETRC"
335 REPO="$MVN_RAWREPO_BASEURL_UPLOAD"
338 EXT=$(echo "$OUTPUT_FILE" | rev |cut -f1 -d '.' |rev)
339 if [ "$EXT" == 'yaml' ]; then
340 OUTPUT_FILE_TYPE='text/x-yaml'
341 elif [ "$EXT" == 'sh' ]; then
342 OUTPUT_FILE_TYPE='text/x-shellscript'
343 elif [ "$EXT" == 'gz' ]; then
344 OUTPUT_FILE_TYPE='application/gzip'
345 elif [ "$EXT" == 'tgz' ]; then
346 OUTPUT_FILE_TYPE='application/gzip'
347 elif [ "$EXT" == 'zip' ]; then
348 OUTPUT_FILE_TYPE='application/zip'
349 elif [ "$EXT" == 'wgn' ]; then
350 OUTPUT_FILE_TYPE='application/gzip'
352 OUTPUT_FILE_TYPE='application/octet-stream'
355 # for multi module projects, the raw repo path must match with project name, not project + module
356 # FQDN is project + module
357 # GROUPID is project name
358 if [ "$MVN_PROJECT_ARTIFACTID" == "$MVN_PROJECT_MODULEID" ]; then
359 PROJECT_NAME=${MVN_PROJECT_GROUPID}
364 if [ -z "$RELEASE_TAG" ]; then
365 SEND_TO="${REPO}/${PROJECT_NAME}"
367 SEND_TO="${REPO}/${PROJECT_NAME}/${RELEASE_TAG}"
370 if [ ! -z "$2" ]; then
371 SEND_TO="$SEND_TO/$2"
374 echo "Sending ${OUTPUT_FILE} to Nexus: ${SEND_TO}"
375 curl -vkn --netrc-file "${NETRC}" --upload-file "${OUTPUT_FILE}" -X PUT -H "Content-Type: $OUTPUT_FILE_TYPE" "${SEND_TO}/${OUTPUT_FILE}-${TIMESTAMP}"
376 curl -vkn --netrc-file "${NETRC}" --upload-file "${OUTPUT_FILE}" -X PUT -H "Content-Type: $OUTPUT_FILE_TYPE" "${SEND_TO}/${OUTPUT_FILE}"
379 upload_wagon_archives()
381 SETUPFILES=$(find "$(pwd)" -name "setup.py")
383 for SETUPFILE in $SETUPFILES; do
384 PLUGIN_FULL_DIR=$(dirname "$SETUPFILE")
385 PLUGIN_BASE_DIR=$(basename "$PLUGIN_FULL_DIR")
386 PLUGIN_NAME=$(grep 'name[[:space:]]*=' "$SETUPFILE" | cut -f2 -d'=' | sed 's/[^0-9a-zA-Z\.]*//g')
387 PLUGIN_VERSION=$(grep 'version[[:space:]]*=' "$SETUPFILE" | cut -f2 -d'=' | sed 's/[^0-9\.]*//g')
389 cd "${PLUGIN_FULL_DIR}"/..
390 echo "In $(pwd), upload zip archive for $PLUGIN_NAME, version $PLUGIN_VERSION"
391 ARCHIVE_FILE_NAME="${PLUGIN_NAME}-${PLUGIN_VERSION}.zip"
392 if [ -z "$ARCHIVE_FILE_NAME" ]; then
393 echo "!!! No zip archive file found ${ARCHIVE_FILE_NAME}"
396 upload_raw_file "${ARCHIVE_FILE_NAME}" "${PLUGIN_NAME}/${PLUGIN_VERSION}"
398 echo "In $(pwd), upload tgz archive for $PLUGIN_NAME, version $PLUGIN_VERSION"
399 ARCHIVE_FILE_NAME="${PLUGIN_NAME}-${PLUGIN_VERSION}.tgz"
400 if [ -z "$ARCHIVE_FILE_NAME" ]; then
401 echo "!!! No tgz archive file found ${ARCHIVE_FILE_NAME}"
404 upload_raw_file "${ARCHIVE_FILE_NAME}" "${PLUGIN_NAME}/${PLUGIN_VERSION}"
410 upload_wagons_and_type_yamls()
412 SETUPFILES=$(find . -name "setup.py")
415 for SETUPFILE in $SETUPFILES; do
416 PLUGIN_DIR=$(dirname "$SETUPFILE")
417 PLUGIN_NAME=$(grep 'name[[:space:]]*=' "$SETUPFILE" | cut -f2 -d'=' | sed 's/[^0-9a-zA-Z\.]*//g')
418 PLUGIN_VERSION=$(grep 'version[[:space:]]*=' "$SETUPFILE" | cut -f2 -d'=' | sed 's/[^0-9\.]*//g')
419 PLUGIN_VERSION_MAJOR=$(echo "$PLUGIN_VERSION" | cut -f1 -d'.')
420 PLUGIN_VERSION_MAJOR_MINOR=$(echo "$PLUGIN_VERSION" | cut -f1-2 -d'.')
422 echo "Found setup file in $PLUGIN_DIR, for plugin $PLUGIN_NAME version $PLUGIN_VERSION"
424 TYPEFILE_NAME=$( grep -l "package_name[[:space:]]*:[[:space:]]*${PLUGIN_NAME}" * 2>/dev/null || true )
425 if [ -z "$TYPEFILE_NAME" ]; then
426 echo "!!! No typefile found with matching package name $PLUGIN_NAME"
429 NEWFILENAME="${PLUGIN_NAME}"_types.yaml
430 if [ "$TYPEFILE_NAME" != "$NEWFILENAME" ]; then
431 echo "copy typefile to standard naming"
432 cp -f "$TYPEFILE_NAME" "$NEWFILENAME"
435 TYPEFILE_PACKAGE_VERSION=$(grep 'package_version[[:space:]]*:' "$TYPEFILE_NAME" |cut -f2 -d ':' |sed -r 's/\s+//g')
436 WAGONFILE_NAME=$(ls -1 "${PLUGIN_NAME}"-"${TYPEFILE_PACKAGE_VERSION}"-py27*.wgn)
438 if [ -z "$WAGONFILE_NAME" ]; then
439 echo "!!! No wagonfile found with matching package name and version as required in typefile: "
440 echo " $TYPEFILE_NAME plugin $PLUGIN_NAME package version ${TYPEFILE_PACKAGE_VERSION}"
444 upload_raw_file "${NEWFILENAME}" "${PLUGIN_NAME}/${PLUGIN_VERSION}"
445 upload_raw_file "${WAGONFILE_NAME}" "${PLUGIN_NAME}/${PLUGIN_VERSION}"
447 rm -r "$WAGONFILE_NAME"
450 PY3WAGONFILE_NAME=$(ls -1 "${PLUGIN_NAME}"-"${TYPEFILE_PACKAGE_VERSION}"-py36*.wgn)
451 if [ "$PY3WAGONFILE_NAME" ]; then
452 upload_raw_file "${PY3WAGONFILE_NAME}" "${PLUGIN_NAME}/${PLUGIN_VERSION}"
453 rm -r "$PY3WAGONFILE_NAME"
456 if [ "$TYPEFILE_NAME" != "$NEWFILENAME" ]; then
462 upload_files_of_extension()
464 FILES=$(ls -1 ./*."$1")
466 upload_raw_file "$F" "$2"
469 upload_files_of_extension_recursively()
471 FILES=$(find . -name "*.$1")
473 upload_raw_file "$F" "$2"
478 generate_pypirc_then_publish()
481 USER=$(xpath "$SETTINGS_FILE" "//servers/server[id='$MVN_PYPISERVER_SERVERID']/username/text()")
482 PASS=$(xpath "$SETTINGS_FILE" "//servers/server[id='$MVN_PYPISERVER_SERVERID']/password/text()")
484 if [[ "$MVN_PYPISERVER_BASEURL" != */ ]]; then
485 MVN_PYPISERVER_BASEURL="${MVN_PYPISERVER_BASEURL}/"
489 cat > ~/.pypirc <<EOL
492 $MVN_PYPISERVER_SERVERID
494 [$MVN_PYPISERVER_SERVERID]
495 repository: $MVN_PYPISERVER_BASEURL
500 # this may fail if a package of same version exists
501 python setup.py sdist register -r "$MVN_PYPISERVER_SERVERID" upload -r "$MVN_PYPISERVER_SERVERID"
507 # following the https://wiki.onap.org/display/DW/Independent+Versioning+and+Release+Process
508 #IndependentVersioningandReleaseProcess-StandardizedDockerTagging
509 build_and_push_docker()
512 #IMAGENAME="onap/${FQDN}.${MVN_PROJECT_MODULEID}"
514 ENDID=$(echo $FQDN | rev | cut -f1 -d '.' |rev)
515 if [ "$ENDID" == "${MVN_PROJECT_MODULEID}" ]; then
516 #IMAGENAME="onap/${FQDN/org.onap./}"
517 IMAGENAME="onap/${FQDN}"
519 #IMAGENAME="onap/${FQDN/org.onap./}.${MVN_PROJECT_MODULEID}"
520 IMAGENAME="onap/${FQDN}.${MVN_PROJECT_MODULEID}"
523 IMAGENAME=$(echo "$IMAGENAME" | sed -e 's/_*$//g' -e 's/\.*$//g')
524 IMAGENAME=$(echo "$IMAGENAME" | tr '[:upper:]' '[:lower:]')
526 # use the major and minor version of the MVN artifact version as docker image version
527 VERSION="${MVN_PROJECT_VERSION//[^0-9.]/}"
528 VERSION2=$(echo "$VERSION" | cut -f1-2 -d'.')
530 LFQI="${IMAGENAME}:${VERSION}-${TIMESTAMP}"Z
531 # build a docker image
532 docker build --rm -f ./Dockerfile -t "${LFQI}" ./
534 # all local builds push to SNAPSHOT repo
536 if [ $MVN_DEPLOYMENT_TYPE == "SNAPSHOT" ]; then
537 REPO=$MVN_DOCKERREGISTRY_SNAPSHOT
538 elif [ $MVN_DEPLOYMENT_TYPE == "STAGING" ]; then
539 REPO=$MVN_DOCKERREGISTRY_SNAPSHOT
541 echo "Fail to determine DEPLOYMENT_TYPE"
542 REPO=$MVN_DOCKERREGISTRY_SNAPSHOT
544 echo "DEPLOYMENT_TYPE is: $MVN_DEPLOYMENT_TYPE, repo is $REPO"
546 if [ ! -z "$REPO" ]; then
547 USER=$(xpath "$SETTINGS_FILE" "//servers/server[id='$REPO']/username/text()")
548 PASS=$(xpath "$SETTINGS_FILE" "//servers/server[id='$REPO']/password/text()")
549 if [ -z "$USER" ]; then
550 echo "Error: no user provided"
552 if [ -z "$PASS" ]; then
553 echo "Error: no password provided"
555 [ -z "$PASS" ] && PASS_PROVIDED="<empty>" || PASS_PROVIDED="<password>"
556 echo docker login "$REPO" -u "$USER" -p "$PASS_PROVIDED"
559 docker login "$REPO" -u "$USER" -p "$PASS"
562 # local tag is imagename:version-timestamp
564 # three tags are pushed:
565 # {imagename}:{semver}-SNAPSHOT-{timestamp}Z this is what CIMAN-132 asks
566 # {imagename}:{semver} latest of current version, for testing
567 # {imagename}:latest latest of all, used mainly by csit
568 # LFQI="${IMAGENAME}:${VERSION}-${TIMESTAMP}"Z
572 # Updating tags for ${REPO}/${IMAGENAME}:${VERSION} to include STAGING-latest; and adding new tag for major:minor-STAGING-latest
573 PUSHTAGS="${REPO}/${IMAGENAME}:${VERSION}-SNAPSHOT-${TIMESTAMP}Z ${REPO}/${IMAGENAME}:${VERSION2}-STAGING-latest ${REPO}/${IMAGENAME}:${VERSION}-STAGING-latest ${REPO}/${IMAGENAME}:latest"
575 for NEWTAG in ${PUSHTAGS}
577 echo "tagging ${OLDTAG} to ${NEWTAG}"
578 docker tag "${OLDTAG}" "${NEWTAG}"
579 echo "pushing ${NEWTAG}"
580 docker push "${NEWTAG}"