| #!/usr/bin/env bash |
| |
| # utility script to "lock" workspace and builds |
| # while "shell work" is going on. |
| # for example, can execute this from hudson (with hudson |
| # lock) before promoting to staging directory, to make |
| # sure another build doesn't start while promoting, thereby |
| # erasing the build we are promoting. |
| |
| # to end lock, the lockfile must be removed, which can be |
| # done manually, or as part of the script work |
| # There is a one-hour time-out built in, which should be plenty |
| |
| if [[ -z "${release}" ]] |
| then |
| echo |
| echo " ERRRO: The 'release' environment much be specified for this script. For example," |
| echo " release=juno ./$( basename $0 )" |
| echo |
| exit 1 |
| else |
| echo |
| echo "release: ${release}" |
| export "release" |
| echo |
| fi |
| |
| source aggr_properties.shsource |
| |
| if [ -z $BUILD_HOME ] ; then |
| echo " ERROR: BUILD_HOME must be defined before running this script"; |
| exit 1 |
| fi |
| |
| LOCKFILE="${BUILD_HOME}"/lockfile |
| |
| if [[ -f "$LOCKFILE" ]] |
| then |
| echo " LOCKFILE already exists, so not continuing to protect pending jobs." |
| echo " If there is no pending job, you must manually remove" |
| echo " " "$LOCKFILE" |
| fi |
| |
| |
| touch "$LOCKFILE" |
| |
| "${BUILD_TOOLS_DIR}"/printStats.sh |
| exitCode=$? |
| if [ "${exitCode}" -ne "0" ] |
| then |
| echo "printStats returned an errorCode: " ${exitCode} " Exiting." |
| rm "$LOCKFILE" |
| exit 1 |
| fi |
| |
| PAUSE_SECONDS=5 |
| MAX_TIME=3600 |
| COUNT=0 |
| COUNT_MAX=$(($MAX_TIME/$PAUSE_SECONDS)) |
| #echo "Maximum wait loops: " $COUNT_MAX |
| |
| while [ -f "$LOCKFILE" -a $COUNT -lt $COUNT_MAX ] |
| do |
| |
| sleep $PAUSE_SECONDS |
| COUNT=$(($COUNT+1)) |
| # echo "Loop number: " $COUNT |
| |
| done |
| |
| "${BUILD_TOOLS_DIR}"/printStats.sh |
| exitCode=$? |
| if [ "${exitCode}" -ne "0" ] |
| then |
| echo "printStats returned an errorCode: " ${exitCode} " Exiting." |
| rm "$LOCKFILE" |
| exit 2 |
| fi |
| |
| |
| if [[ -f "$LOCKFILE" ]] |
| then |
| echo "pause loop hit maximum count (timed out). " |
| rm "$LOCKFILE" |
| exit 3 |
| fi |
| |