Skip to content

Commit

Permalink
JBIDE-20904 tweak console output
Browse files Browse the repository at this point in the history
  • Loading branch information
nickboldt committed Apr 14, 2016
1 parent 38b3464 commit e639c1a
Showing 1 changed file with 38 additions and 24 deletions.
62 changes: 38 additions & 24 deletions publish/stage.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/bin/bash
#!/bin/bash
# Script to copy a CI build to staging for QE review
# From Jenkins, call this script 7 times in parallel (&) then call wait to block until they're all done

Expand All @@ -19,6 +19,12 @@ SRC_TYPE="snapshots"
DESTTYPE="staging"
rawJOB_NAME="\${PRODUCT}-\${site}_\${stream}"
sites=""
quiet=0

log ()
{
if [[ $quiet == 0 ]]; then echo $1; fi
}

# can be used to publish a build (including installers, site zips, MD5s, build log) or just an update site folder
usage ()
Expand All @@ -29,7 +35,7 @@ usage ()
echo "To stage JBT core, coretests, central & earlyaccess"
echo " $0 -sites \"site coretests-site central-site earlyaccess-site\" -dd mars -stream 4.3.mars -vr 4.3.1.CR1a -JOB_NAME jbosstools-build-sites.aggregate.\\\${site}_\\\${stream}"
echo "To stage JBT discovery.* sites & browsersim-standalone"
echo " $0 -sites \"discovery.central discovery.earlyaccess browsersim-standalone\" -dd mars -stream 4.3.mars -vr 4.3.1.CR1a"
echo " $0 -sites \"discovery.central discovery.earlyaccess browsersim-standalone\" -dd mars -stream 4.3.mars -vr 4.3.1.CR1a -q"
exit 1
}

Expand All @@ -55,11 +61,14 @@ while [[ "$#" -gt 0 ]]; do

'-DWORKSPACE'|'-WORKSPACE') WORKSPACE="$2"; shift 1;; # optional
'-DID'|'-ID') whichID="$2"; shift 1;; # optionally, set a specific build ID such as 2015-10-02_18-28-18-B124; if not set, pull latest
'-q') quiet=1; shift 0;; # suppress extra console output
*) OTHERFLAGS="${OTHERFLAGS} $1"; shift 0;;
esac
shift 1
done

if [[ $quiet == 0 ]]; then consoleDest=/dev/null; else consoleDest=/dev/tty; fi

# set mars/staging, 9.0/staging, etc.
if [[ ! ${DESTDIR} ]]; then echo "ERROR: DESTDIR not set. Please define eclipseReleaseName or devstudioReleaseVersion"; echo ""; usage; fi

Expand All @@ -71,19 +80,24 @@ fi
if [[ ! ${WORKSPACE} ]]; then WORKSPACE=${tmpdir}; fi

for site in ${sites}; do
(( j++ ));
done

for site in ${sites}; do
(( i++ ));
# evaluate site or stream variables embedded in JOB_NAME
if [[ ${rawJOB_NAME/\$\{site\}} != ${rawJOB_NAME} ]] || [[ ${rawJOB_NAME/\$\{stream\}} != ${rawJOB_NAME} ]]; then JOB_NAME=$(eval echo ${rawJOB_NAME}); fi

if [[ ${whichID} == "latest" ]]; then
ID=""
echo "+ Check ${DEST_URL}/${DESTDIR}/${SRC_TYPE}/builds/${JOB_NAME}" | egrep "${grepstring}"
"+ Check ${DEST_URL}/${DESTDIR}/${SRC_TYPE}/builds/${JOB_NAME}" | egrep "${grepstring}"
if [[ ${DESTINATION/@/} == ${DESTINATION} ]]; then # local
ID=$(ls ${DESTINATION}/${DESTDIR}/${SRC_TYPE}/builds/${JOB_NAME} | grep "20.\+" | grep -v sftp | sort | tail -1)
else # remote
ID=$(echo "ls 20*" | sftp ${DESTINATION}/${DESTDIR}/${SRC_TYPE}/builds/${JOB_NAME} 2>&1 | grep "20.\+" | grep -v sftp | sort | tail -1)
fi
ID=${ID%%/*}
echo "+ ${DESTINATION}/${DESTDIR}/${SRC_TYPE}/builds/${JOB_NAME} :: ID = $ID" | egrep "${JOB_NAME}|${site}|${ID}|ERROR"
echo "[INFO] [$i/$j] In ${DESTINATION}/${DESTDIR}/${SRC_TYPE}/builds/${JOB_NAME} found ID = $ID" | egrep "${JOB_NAME}|${site}|${ID}|ERROR"
fi
grepstring="${JOB_NAME}|${site}|${ID}|ERROR|${versionWithRespin}|${DESTDIR}|${DESTTYPE}"
DEST_URLs=""
Expand All @@ -92,41 +106,41 @@ for site in ${sites}; do
if [[ ${ID} ]]; then
if [[ ${site} == "site" || ${site} == "product" ]]; then sitename="core"; else sitename=${site/-site/}; fi
if [[ ${site} == "site" ]]; then buildname="core"; else buildname=${site/-site/}; fi
echo "Latest build for ${sitename} (${site}): ${ID}" | egrep "${grepstring}"
log "[DEBUG] [$i/$j] Latest build for ${sitename} (${site}): ${ID}" | egrep "${grepstring}"
# use ${HOME}/temp-stage/ instead of /tmp because insufficient space
tmpdir=`mkdir -p ${HOME}/temp-stage/ && mktemp -d -t -p ${HOME}/temp-stage/` && mkdir -p $tmpdir && pushd $tmpdir >/dev/null
# echo "+ ${RSYNC} ${DESTINATION}/${DESTDIR}/${SRC_TYPE}/builds/${JOB_NAME}/${ID}/* ${tmpdir}/" | egrep "${grepstring}"
${RSYNC} ${DESTINATION}/${DESTDIR}/${SRC_TYPE}/builds/${JOB_NAME}/${ID}/* ${tmpdir}/
# copy build folder
if [[ ${DESTINATION/@/} == ${DESTINATION} ]]; then # local
echo "+ mkdir -p ${DESTINATION}/${DESTDIR}/${DESTTYPE}/builds/${PRODUCT}-${versionWithRespin}-build-${buildname}" | egrep "${grepstring}"
mkdir -p ${DESTINATION}/${DESTDIR}/${DESTTYPE}/builds/${PRODUCT}-${versionWithRespin}-build-${buildname}
log "[DEBUG] [$i/$j] + mkdir -p ${DESTINATION}/${DESTDIR}/${DESTTYPE}/builds/${PRODUCT}-${versionWithRespin}-build-${buildname}" | egrep "${grepstring}"
mkdir -p ${DESTINATION}/${DESTDIR}/${DESTTYPE}/builds/${PRODUCT}-${versionWithRespin}-build-${buildname} 1>$consoleDest
else # remote
echo "+ mkdir ${PRODUCT}-${versionWithRespin}-build-${buildname} | sftp ${DESTINATION}/${DESTDIR}/${DESTTYPE}/builds/" | egrep "${grepstring}"
echo "mkdir ${PRODUCT}-${versionWithRespin}-build-${buildname}" | sftp ${DESTINATION}/${DESTDIR}/${DESTTYPE}/builds/
log "[DEBUG] [$i/$j] + mkdir ${PRODUCT}-${versionWithRespin}-build-${buildname} | sftp ${DESTINATION}/${DESTDIR}/${DESTTYPE}/builds/" | egrep "${grepstring}"
echo "mkdir ${PRODUCT}-${versionWithRespin}-build-${buildname}" | sftp ${DESTINATION}/${DESTDIR}/${DESTTYPE}/builds/ 1>$consoleDest
fi
echo "+ ${RSYNC} ${tmpdir}/* ${DESTINATION}/${DESTDIR}/${DESTTYPE}/builds/${PRODUCT}-${versionWithRespin}-build-${buildname}/${ID}/" | egrep "${grepstring}"
log "[DEBUG] [$i/$j] + ${RSYNC} ${tmpdir}/* ${DESTINATION}/${DESTDIR}/${DESTTYPE}/builds/${PRODUCT}-${versionWithRespin}-build-${buildname}/${ID}/" | egrep "${grepstring}"
${RSYNC} ${tmpdir}/* ${DESTINATION}/${DESTDIR}/${DESTTYPE}/builds/${PRODUCT}-${versionWithRespin}-build-${buildname}/${ID}/ --exclude="repo"
DEST_URLs="${DEST_URLs} ${DEST_URL}/${DESTDIR}/${DESTTYPE}/builds/${PRODUCT}-${versionWithRespin}-build-${buildname}/"
# symlink latest build
ln -s ${ID} latest; rsync -aPrz --rsh=ssh --protocol=28 ${tmpdir}/latest ${DESTINATION}/${DESTDIR}/${DESTTYPE}/builds/${PRODUCT}-${versionWithRespin}-build-${buildname}/
ln -s ${ID} latest; ${RSYNC} ${tmpdir}/latest ${DESTINATION}/${DESTDIR}/${DESTTYPE}/builds/${PRODUCT}-${versionWithRespin}-build-${buildname}/ 1>$consoleDest
DEST_URLs="${DEST_URLs} ${DEST_URL}/${DESTDIR}/${DESTTYPE}/builds/${PRODUCT}-${versionWithRespin}-build-${buildname}/latest/"
# copy update site
if [[ -d ${tmpdir}/all/repo/ ]]; then
if [[ ${DESTINATION/@/} == ${DESTINATION} ]]; then # local
echo "+ mkdir -p ${DESTINATION}/${DESTDIR}/${DESTTYPE}/updates/${sitename}" | egrep "${grepstring}"
mkdir -p ${DESTINATION}/${DESTDIR}/${DESTTYPE}/updates/${sitename}
log "[DEBUG] [$i/$j] + mkdir -p ${DESTINATION}/${DESTDIR}/${DESTTYPE}/updates/${sitename}" | egrep "${grepstring}"
mkdir -p ${DESTINATION}/${DESTDIR}/${DESTTYPE}/updates/${sitename} 1>$consoleDest
else # remote
echo "+ mkdir ${sitename} | sftp ${DESTINATION}/${DESTDIR}/${DESTTYPE}/updates/" | egrep "${grepstring}"
echo "mkdir ${sitename}" | sftp ${DESTINATION}/${DESTDIR}/${DESTTYPE}/updates/
log "[DEBUG] [$i/$j] + mkdir ${sitename} | sftp ${DESTINATION}/${DESTDIR}/${DESTTYPE}/updates/" | egrep "${grepstring}"
echo "mkdir ${sitename}" | sftp ${DESTINATION}/${DESTDIR}/${DESTTYPE}/updates/ 1>$consoleDest
fi
echo "+ ${RSYNC} ${tmpdir}/all/repo/* ${DESTINATION}/${DESTDIR}/${DESTTYPE}/updates/${sitename}/${versionWithRespin}/" | egrep "${grepstring}"
${RSYNC} ${tmpdir}/all/repo/* ${DESTINATION}/${DESTDIR}/${DESTTYPE}/updates/${sitename}/${versionWithRespin}/
log "[DEBUG] [$i/$j] + ${RSYNC} ${tmpdir}/all/repo/* ${DESTINATION}/${DESTDIR}/${DESTTYPE}/updates/${sitename}/${versionWithRespin}/" | egrep "${grepstring}"
${RSYNC} ${tmpdir}/all/repo/* ${DESTINATION}/${DESTDIR}/${DESTTYPE}/updates/${sitename}/${versionWithRespin}/ 1>$consoleDest
DEST_URLs="${DEST_URLs} ${DEST_URL}/${DESTDIR}/${DESTTYPE}/updates/${sitename}/${versionWithRespin}/"
else
# don't warn for discovery sites since they don't have update sites
if [[ "${site/discovery}" == "${site}" ]]; then
echo "[WARN] No update site found to publish in ${tmpdir}/all/repo/"
echo "[WARN] [$i/$j] No update site found to publish in ${tmpdir}/all/repo/ to ${DESTINATION}/${DESTDIR}/${DESTTYPE}/updates/${sitename}"
fi
fi
# copy update site zip
Expand All @@ -136,17 +150,17 @@ for site in ${sites}; do
y=$(find ${tmpdir}/all/ -name "${ZIPPREFIX}*${suffix}.zip" -a -not -name "*latest*")
fi
if [[ -f $y ]]; then
${RSYNC} ${y} ${DESTINATION}/${DESTDIR}/${DESTTYPE}/updates/core/${ZIPPREFIX}${versionWithRespin}${suffix}.zip
${RSYNC} ${y}.sha256 ${DESTINATION}/${DESTDIR}/${DESTTYPE}/updates/core/${ZIPPREFIX}${versionWithRespin}${suffix}.zip.sha256
${RSYNC} ${y} ${DESTINATION}/${DESTDIR}/${DESTTYPE}/updates/${sitename}/${ZIPPREFIX}${versionWithRespin}${suffix}.zip 1>$consoleDest
${RSYNC} ${y}.sha256 ${DESTINATION}/${DESTDIR}/${DESTTYPE}/updates/${sitename}/${ZIPPREFIX}${versionWithRespin}${suffix}.zip.sha256 1>$consoleDest
else
echo "[WARN] No update site zip (repository.zip or ${ZIPPREFIX}*${suffix}.zip) found to publish in ${tmpdir}/all/"
echo "[WARN] [$i/$j] No update site zip (repository.zip or ${ZIPPREFIX}*${suffix}.zip) found to publish in ${tmpdir}/all/ to ${DESTINATION}/${DESTDIR}/${DESTTYPE}/updates/${sitename}"
fi
popd >/dev/null
rm -fr $tmpdir
echo "DONE: ${JOB_NAME} :: ${site} :: ${ID}" | egrep "${grepstring}"
for du in ${DEST_URLs}; do echo "${du}" | egrep "${grepstring}"; done
echo "[INFO] [$i/$j] DONE: ${JOB_NAME} :: ${site} :: ${ID}" | egrep "${grepstring}"
for du in ${DEST_URLs}; do echo "[INFO] [$i/$j] ${du}" | egrep "${grepstring}"; done
echo ""
else
echo "ERROR: no latest build found for ${JOB_NAME} :: ${site} :: ${ID}" | egrep "${grepstring}"
echo "[ERROR] [$i/$j] No latest build found for ${JOB_NAME} :: ${site} :: ${ID}" | egrep "${grepstring}"
fi
done

0 comments on commit e639c1a

Please sign in to comment.