| #!/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" |
| |