- [[:tips|Tips and Tricks]]
====== Build reports ======
Here's a script to use a wiki page for an automated build report. In this example, git-svn is used as revision control system. The script is intended to run as a cron-job.
#!/bin/bash
LOCKFILE=/tmp/compile.lock
# don't do anything if we are compiling
if [ -f $LOCKFILE ]
then
exit 0
fi
WIKITEXT=/tmp/compile_failure.txt
LASTREVTXT=/tmp/last_compile.txt
LASTRESULTTXT=/tmp/last_result.txt
cd /var/scm/your_project
# get current and last revision
SVNREV=`git svn log --oneline --limit=1 | sed 's/r\([0-9]*\).*/\1/'`
# make sure it exists
if [ ! -f $LASTREVTXT ]
then
echo "0" >$LASTREVTXT
fi
LASTREV=`cat $LASTREVTXT`
# exit if we already compiled this revision
if [ $SVNREV -eq $LASTREV ]
then
exit 0
fi
echo $SVNREV >$LASTREVTXT
touch $LOCKFILE
# make clean
make clean >/dev/null
# build project
make 2>errout.txt
RESULT=$?
rm $LOCKFILE
GCC_VERSION=`gcc --version | head -n1`
OS_VERSION=`uname -s -m`
# wiki page header
echo "====== Current compile issues ======" >$WIKITEXT
echo >>$WIKITEXT
echo "Compiling with **$GCC_VERSION** on **$OS_VERSION**.">>$WIKITEXT
echo >>$WIKITEXT
echo "Revision **#$SVNREV**, compilation from `date`." >>$WIKITEXT
echo >>$WIKITEXT
# wiki page content
if [ $RESULT -ne 0 ]
then
RESULTMSG=FAILURE
echo "" >>$WIKITEXT
cat /var/scm/your_project/errout.txt >>$WIKITEXT
echo "" >>$WIKITEXT
else
RESULTMSG=SUCCESS
echo "//There are currently no issues.//" >>$WIKITEXT
fi
# make sure the result file exists
if [ ! -f $LASTRESULTTXT ]
then
echo "0" >$LASTRESULTTXT
fi
LASTRESULT=`cat $LASTRESULTTXT`
echo $RESULTMSG > $LASTRESULTTXT
# figure out if this result is different from the last one
if [ "$LASTRESULT" == "$RESULTMSG" ]
then
MINOR=-t
else
MINOR=
fi
# commit to wiki
sudo -u apache php /path_to_your_dokuwiki_installation/bin/dwpage.php $MINOR -m "Updated for revision #$SVNREV, result: $RESULTMSG" commit $WIKITEXT build_report
===== Example output =====
==== Build success ====
Compiling with **gcc (Gentoo 4.4.3 p1.0) 4.4.3** on **Linux x86_64**.
Revision **#7726**, compilation from Tue Apr 6 12:50:03 CEST 2010.
//There are currently no issues.//
==== Build failure ====
Compiling with **gcc (Gentoo 4.4.3 p1.0) 4.4.3** on **Linux x86_64**.
Revision **#7701**, compilation from Sun Apr 4 17:03:14 CEST 2010.
src/softlist.c: In function 'bool load_software_part(running_device*, const char*, software_info**, software_part**, char**)':
src/softlist.c:978: error: 'load_software_part_region' was not declared in this scope
make: *** [obj/sdl/softlist.o] Error 1