#!/bin/bash set -x . /etc/mason.conf REPORT_PATH=/var/mason/report.html SERVER_PATH=/srv/mason sed_escape() { printf "%s\n" "$1" | sed -e 's/\W/\\&/g' } create_report() { cat > $REPORT_PATH <<'EOF'

Mason

Baserock: Continuous Delivery

Build log of changes to BRANCH from TROVE. Most recent first.

Started Ref Duration Result
EOF sed -i 's/BRANCH/'"$(sed_escape "$1")"'/' $REPORT_PATH sed -i 's/TROVE/'"$(sed_escape "$2")"'/' $REPORT_PATH } update_report() { # Give function params sensible names build_start_time="$1" build_trove_host="$2" build_ref="$3" build_sha1="$4" build_duration="$5" build_result="$6" # Generate template if report file is not there if [ ! -f $REPORT_PATH ]; then create_report $build_ref $build_trove_host fi # Build table row for insertion into report file if [ "$build_result" = nonet ]; then msg=''"${build_start_time}"'Failed to contact '"${build_trove_host}"''"${build_duration}s"''"${build_result}"'' else msg=''"${build_start_time}"''"${build_sha1}"''"${build_duration}s"''"${build_result}"'' fi # Insert report line, newest at top sed -i 's//\n'"$(sed_escape "$msg")"'/' $REPORT_PATH } update_report_time() { # Give function params sensible names build_start_time="$1" # If the report file exists, update the last-checked-for-updates time if [ -f $REPORT_PATH ]; then sed -i 's/....-..-.. ..:..:..<\/code>/'"$(sed_escape "$build_start_time")"'<\/code>/' $REPORT_PATH fi } START_TIME=`date +%Y-%m-%d\ %T` update_report_time "$START_TIME" cp "$REPORT_PATH" "$SERVER_PATH/index.html" logfile="$(mktemp)" /usr/lib/mason/mason.sh 2>&1 | tee "$logfile" case "${PIPESTATUS[0]}" in 0) RESULT=pass ;; 33) RESULT=skip ;; 42) RESULT=nonet ;; *) RESULT=fail ;; esac # TODO: Update page with last executed time if [ "$RESULT" = skip ]; then rm "$logfile" exit 0 fi DURATION=$(( $(date +%s) - $(date --date="$START_TIME" +%s) )) SHA1="$(cd "ws/$DEFINITIONS_REF/$UPSTREAM_TROVE_ADDRESS/baserock/baserock/definitions" && git rev-parse HEAD)" update_report "$START_TIME" \ "$UPSTREAM_TROVE_ADDRESS" \ "$DEFINITIONS_REF" \ "$SHA1" \ "$DURATION" \ "$RESULT" # # Copy report into server directory # cp "$REPORT_PATH" "$SERVER_PATH/index.html" mkdir "$SERVER_PATH/log" mv "$logfile" "$SERVER_PATH/log/$SHA1--$START_TIME.log"