From f28c4526f94d4cea2032c51a6280b0d3691b01a8 Mon Sep 17 00:00:00 2001 From: Lusheng Ji Date: Wed, 6 Sep 2017 20:09:04 +0000 Subject: Fix mvn-scrit for docker Issue-Id: DCAEGEN2-60 Change-Id: I5bb456a86488030e443420b822e834d90c31651e Signed-off-by: Lusheng Ji --- mvn-phase-script.sh | 107 +++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 81 insertions(+), 26 deletions(-) diff --git a/mvn-phase-script.sh b/mvn-phase-script.sh index 9ca53de..caba591 100755 --- a/mvn-phase-script.sh +++ b/mvn-phase-script.sh @@ -21,7 +21,7 @@ echo "running script: [$0] for module [$1] at stage [$2]" -MVN_PROJECT_MODULEID="$1" +MVN_PROJECT_MODULEID="$1" MVN_PHASE="$2" echo "MVN_PROJECT_MODULEID is [$MVN_PROJECT_MODULEID]" @@ -51,10 +51,10 @@ echo "MVN_DEPLOYMENT_TYPE is [$DEPLOYMENT_TYPE]" echo "=> Prepare environment " #env -TIMESTAMP=$(date +%C%y%m%dT%H%M%S) +TIMESTAMP=$(date +%C%y%m%dT%H%M%S) export BUILD_NUMBER="${TIMESTAMP}" -# expected environment variables +# expected environment variables if [ -z "${MVN_NEXUSPROXY}" ]; then echo "MVN_NEXUSPROXY environment variable not set. Cannot proceed" exit @@ -67,7 +67,7 @@ if [ -z "$WORKSPACE" ]; then WORKSPACE=$(pwd) fi -# mvn phase in life cycle +# mvn phase in life cycle MVN_PHASE="$2" case $MVN_PHASE in @@ -88,7 +88,7 @@ test) pip install --upgrade pip pip install --upgrade tox argparse pip freeze - cd $WORKSPACE/ + cd "$WORKSPACE"/ tox deactivate echo "==> test phase script done" @@ -102,33 +102,90 @@ install) deploy) echo "==> deploy phase script" +if false; then + # set up env variables, get ready for template resolution + export ONAPTEMPLATE_RAWREPOURL_org_onap_ccsdk_platform_plugins_releases="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.ccsdk.plugins/releases" + export ONAPTEMPLATE_RAWREPOURL_org_onap_ccsdk_platform_plugins_snapshots="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.ccsdk.plugins/snapshots" + export ONAPTEMPLATE_RAWREPOURL_org_onap_ccsdk_platform_blueprints_releases="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.ccsdk.blueprints/releases" + export ONAPTEMPLATE_RAWREPOURL_org_onap_ccsdk_platform_blueprints_snapshots="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.ccsdk.blueprints/snapshots" + export ONAPTEMPLATE_RAWREPOURL_org_onap_dcaegen2_releases="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.dcaegen2/releases" + export ONAPTEMPLATE_RAWREPOURL_org_onap_dcaegen2_snapshots="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.dcaegen2/snapshots" + export ONAPTEMPLATE_RAWREPOURL_org_onap_dcaegen2_platform_plugins_releases="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.dcaegen2.platform.plugins/releases" + export ONAPTEMPLATE_RAWREPOURL_org_onap_dcaegen2_platform_plugins_snapshots="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.dcaegen2.platform.plugins/snapshots" + export ONAPTEMPLATE_RAWREPOURL_org_onap_dcaegen2_platform_blueprints_releases="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.dcaegen2.platform.blueprints/releases" + export ONAPTEMPLATE_RAWREPOURL_org_onap_dcaegen2_platform_blueprints_snapshots="$MVN_RAWREPO_BASEURL_DOWNLOAD/org.onap.dcaegen2.platform.blueprints/snapshots" + + export ONAPTEMPLATE_PYPIURL_org_onap_dcaegen2="${MVN_NEXUSPROXY}/content/sites/pypi" + + export ONAPTEMPLATE_DOCKERREGURL_org_onap_dcaegen2_releases="$MVN_DOCKERREGISTRY_DAILY" + export ONAPTEMPLATE_DOCKERREGURL_org_onap_dcaegen2_snapshots="$MVN_DOCKERREGISTRY_DAILY/snapshots" + + + TEMPLATES=$(env |grep ONAPTEMPLATE) + echo "====> Resolving the following temaplate from environment variables " + echo "[$TEMPLATES]" + SELFFILE=$(echo "$0" | rev | cut -f1 -d '/' | rev) + for TEMPLATE in $TEMPLATES; do + KEY=$(echo "$TEMPLATE" | cut -f1 -d'=') + VALUE=$(echo "$TEMPLATE" | cut -f2 -d'=') + VALUE2=$(echo "$TEMPLATE" | cut -f2 -d'=' |sed 's/\//\\\//g') + FILES=$(grep -rl "$KEY") + + # assuming FILES is not longer than 2M bytes, the limit for variable value max size on this VM + for F in $FILES; do + if [[ $F == *"$SELFFILE" ]]; then + continue + fi + echo "======> Resolving template $KEY to value $VALUE for file $F" + sed -i "s/{{[[:space:]]*$KEY[[:space:]]*}}/$VALUE2/g" "$F" + + #cat "$F" + done + + #if [ ! -z "$FILES" ]; then + # echo "====> Resolving template $VALUE to value $VALUE" + # #CMD="grep -rl \"$VALUE\" | tr '\n' '\0' | xargs -0 sed -i \"s/{{[[:space:]]*$VALUE[[:space:]]*}}/$VALUE/g\"" + # grep -rl "$KEY" | tr '\n' '\0' | xargs -0 sed -i 's/$KEY/$VALUE2/g' + # #echo $CMD + # #eval $CMD + #fi + done + echo "====> Done template reolving" + + FQDN="${MVN_PROJECT_GROUPID}.${MVN_PROJECT_ARTIFACTID}" if [ "$MVN_PROJECT_MODULEID" == "__" ]; then MVN_PROJECT_MODULEID="" fi -if false; then - # ============================= example deploying raw artifact =========================== # Extract the username and password to the nexus repo from the settings file USER=$(xpath -q -e "//servers/server[id='$MVN_RAWREPO_SERVERID']/username/text()" "$SETTINGS_FILE") PASS=$(xpath -q -e "//servers/server[id='$MVN_RAWREPO_SERVERID']/password/text()" "$SETTINGS_FILE") NETRC=$(mktemp) echo "machine $MVN_RAWREPO_HOST login $USER password $PASS" > "$NETRC" - REPO="$MVN_RAWREPO_BASEURL_DOWNLOAD" + REPO="$MVN_RAWREPO_BASEURL_UPLOAD" FQDN="${MVN_PROJECT_GROUPID}.${MVN_PROJECT_ARTIFACTID}" + OUTPUT_FILES="*.yaml" - OUTPUT_FILE='analytics.bin' - echo "Test" > ${OUTPUT_FILE} + if [ "$MVN_DEPLOYMENT_TYPE" == 'SNAPSHOT' ]; then + SEND_TO="${REPO}/${FQDN}/snapshots" + elif [ "$MVN_DEPLOYMENT_TYPE" == 'STAGING' ]; then + SEND_TO="${REPO}/${FQDN}/releases" + else + echo "Unreconfnized deployment type, quit" + exit + fi - SEND_TO="${REPO}/${FQDN}/todelete/${OUTPUT_FILE}" echo "Sending ${OUTPUT_FILE} to Nexus: ${SEND_TO}" - curl -vkn --netrc-file "${NETRC}" --upload-file "${OUTPUT_FILE}" "${SEND_TO}" + for OUTPUT_FILE in $OUTPUT_FILES; do + echo curl -vkn --netrc-file "${NETRC}" --upload-file "${OUTPUT_FILE}" "${SEND_TO}/${OUTPUT_FILE}" + curl -vkn --netrc-file "${NETRC}" --upload-file "${OUTPUT_FILE}" "${SEND_TO}/${OUTPUT_FILE}-${MVN_PROJECT_VERSION}-${TIMESTAMP}" + curl -vkn --netrc-file "${NETRC}" --upload-file "${OUTPUT_FILE}" "${SEND_TO}/${OUTPUT_FILE}" + done # ========================== end of example deploying raw artifact ======================== -fi - - +fi # ================== example building and deploying docker image ========================== IMAGENAME="onap/${FQDN}.${MVN_PROJECT_MODULEID}" IMAGENAME=$(echo "$IMAGENAME" | sed -e 's/_*$//g' -e 's/\.*$//g') @@ -136,26 +193,26 @@ fi # use the major and minor version of the MVN artifact version as docker image version VERSION="${MVN_PROJECT_VERSION//[^0-9.]/}" VERSION2=$(echo "$VERSION" | cut -f1-2 -d'.') - + LFQI="${IMAGENAME}:${VERSION}-${TIMESTAMP}" BUILD_PATH="${WORKSPACE}" # build a docker image docker build --rm -f "${WORKSPACE}"/Dockerfile -t "${LFQI}" "${BUILD_PATH}" - REPO="" + REPO="" if [ $MVN_DEPLOYMENT_TYPE == "SNAPSHOT" ]; then REPO=$MVN_DOCKERREGISTRY_DAILY elif [ $MVN_DEPLOYMENT_TYPE == "STAGING" ]; then # there seems to be no staging docker registry? set to use SNAPSHOT also #REPO=$MVN_DOCKERREGISTRY_RELEASE REPO=$MVN_DOCKERREGISTRY_DAILY - else + else echo "Fail to determine DEPLOYMENT_TYPE" REPO=$MVN_DOCKERREGISTRY_DAILY fi echo "DEPLOYMENT_TYPE is: $MVN_DEPLOYMENT_TYPE, repo is $REPO" - if [ ! -z "$REPO" ]; then + if [ ! -z "$REPO" ]; then USER=$(xpath -e "//servers/server[id='$REPO']/username/text()" "$SETTINGS_FILE") PASS=$(xpath -e "//servers/server[id='$REPO']/password/text()" "$SETTINGS_FILE") if [ -z "$USER" ]; then @@ -168,30 +225,28 @@ fi echo docker login "$REPO" -u "$USER" -p "$PASS_PROVIDED" docker login "$REPO" -u "$USER" -p "$PASS" - if [ $MVN_DEPLOYMENT_TYPE == "SNAPSHOT" ]; then - REPO="$REPO/SNAPSHOTS" + REPO="$REPO/snapshots" elif [ $MVN_DEPLOYMENT_TYPE == "STAGING" ]; then # there seems to be no staging docker registry? set to use SNAPSHOT also #REPO=$MVN_DOCKERREGISTRY_RELEASE REPO="$REPO" - else + else echo "Fail to determine DEPLOYMENT_TYPE" - REPO="$REPO/UNKNOWN" + REPO="$REPO/unknown" fi OLDTAG="${LFQI}" PUSHTAGS="${REPO}/${IMAGENAME}:${VERSION2}-${TIMESTAMP} ${REPO}/${IMAGENAME}:${VERSION2} ${REPO}/${IMAGENAME}:${VERSION2}-latest" for NEWTAG in ${PUSHTAGS} do - echo "tagging ${OLDTAG} to ${NEWTAG}" + echo "tagging ${OLDTAG} to ${NEWTAG}" docker tag "${OLDTAG}" "${NEWTAG}" - echo "pushing ${NEWTAG}" + echo "pushing ${NEWTAG}" docker push "${NEWTAG}" OLDTAG="${NEWTAG}" done fi - # ============= end of example building and deploying docker image ======================== ;; *) -- cgit 1.2.3-korg