diff --git a/build_tools/cont_integration.sh b/build_tools/cont_integration.sh index 5e6c7e4487..73e39c9be3 100755 --- a/build_tools/cont_integration.sh +++ b/build_tools/cont_integration.sh @@ -8,16 +8,58 @@ # for a certain interval. # +SRC_GIT_REPO=/data/git/rocksdb +error=0 + function log { DATE=`date +%Y-%m-%d:%H:%M:%S` echo $DATE $@ } function log_err { - log "ERROR: $@ Error code: $?." + log "ERROR: $@ Error code: $error." } function update_repo_status { + # Update the parent first. + pushd $SRC_GIT_REPO + + # This is a fatal error. Something in the environment isn't right and we will + # terminate the execution. + error=$? + if [ ! $error -eq 0 ]; then + log_err "Where is $SRC_GIT_REPO?" + exit $error + fi + + HTTPS_PROXY=fwdproxy:8080 git fetch -f + + error=$? + if [ ! $error -eq 0 ]; then + log_err "git fetch -f failed." + popd + return $error + fi + + git update-ref refs/heads/master refs/remotes/origin/master + + error=$? + if [ ! $error -eq 0 ]; then + log_err "git update-ref failed." + popd + return $error + fi + + popd + + # We're back in an instance-specific directory. Get the latest changes. + git pull --rebase + + error=$? + if [ ! $error -eq 0 ]; then + log_err "git pull --rebase failed." + return $error + fi } # @@ -33,13 +75,11 @@ PREV_COMMIT= log "Starting to monitor for new RocksDB changes ..." log "Running under `pwd` as `whoami`." -git remote -v -git status - # Paranoia. Make sure that we're using the right branch. git checkout master -if [ ! $? -eq 0 ]; then +error=$? +if [ ! $error -eq 0 ]; then log_err "This is not good. Can't checkout master. Bye-bye!" exit 1 fi @@ -49,9 +89,10 @@ fi while true; do # Get the latest changes committed. - git pull --rebase + update_repo_status - if [ $? -eq 0 ]; then + error=$? + if [ $error -eq 0 ]; then LAST_COMMIT=`git log -1 | head -1 | grep commit | awk '{ print $2; }'` log "Last commit is '$LAST_COMMIT', previous commit is '$PREV_COMMIT'." @@ -73,7 +114,8 @@ do # POST_RECEIVE_HOOK=1 php $CONTRUN_DETERMINATOR - if [ $? -eq 0 ]; then + error=$? + if [ $error -eq 0 ]; then log "Sandcastle run successfully triggered." else log_err "Failed to trigger Sandcastle run." @@ -83,7 +125,7 @@ do fi fi else - log_err "git pull --rebase failed. Will skip running tests for now." + log_err "Getting latest changes failed. Will skip running tests for now." fi # Always sleep, even if errors happens while trying to determine the latest