#!/bin/bash # This is the cronjob as run on our ASF box aka svn-qavm. # It uses neels' mad bash script magic called 'pat' to update and # build the latest trunk, invokes a benchmark and sends as mail. #EMAILS=your@email.addresses EMAILS="" if [ "$USER" = "neels" ]; then # I don't want to keep editing files after every update. ~Neels EMAILS=dev@subversion.apache.org fi echo echo "--------------------------------------------------------------------" date echo results="$(tempfile)" # first update trunk to HEAD and rebuild. # update/build is logged to the cronjob log (via stdout) cd /home/neels/pat/trunk /home/neels/bin/pat update if [ "$?" -ne "0" ]; then subject="Failed to update to HEAD." echo "$subject" > "$results" echo "$subject" else rev="$(svn info /home/neels/pat/trunk/src | grep Revision)" if [ -z "$rev" ]; then subject="Working copy problem." echo "$subject" > "$results" echo "$subject" else /home/neels/bin/pat remake if [ "$?" -ne "0" ]; then subject="Failed to build $rev." echo "$subject" > "$results" echo "$subject" else # updating and building succeeded! # run the benchmark: compiled="$(/home/neels/pat/trunk/prefix/bin/svn --version | grep "compiled")" subject="$rev$compiled" cd /home/neels/svnbench/ # make more or less sure that runs don't leak into each other via # I/O caching. sync # basically, just run it. But also, I want to # - append output to stdout, for cronjob logging. # - send output as mail, but only this run's output less update&build "$(which time)" -p ./run 2>&1 | tee "$results" fi fi fi if [ -n "$EMAILS" ]; then cat "$results" | mail -s "[svnbench] $subject" $EMAILS else echo "No email addresses configured." fi rm "$results"