#!/bin/sh # environment variables for my project - change to match yours export JAVA_HOME="/usr/java/java" export ANT_HOME="/home/builder/apache-ant-1.7.1" export ANT_OPTS="-Xmx512m" export PATH="$JAVA_HOME/bin:$ANT_HOME/bin:$PATH" export PYTHON_HOME="/home/builder/Python-2.6.4" export P4USER=dudley export P4PORT=perforce:1666 export P4CLIENT=buildclient # my email address ADMINEMAIL="admin-email-address" buildtheapp () { #Let us build the app p4 sync //depot/...@$SYNCTO #using ant to compile, errors sent to build.err ant >build.out 2>build.err ERROR_LOG="./build.err" if [ -s "$ERROR_LOG" ]; then BUILDFAILED=1 echo "The build has failed." echo "bad" >lastBuildStatus else echo "good" >lastBuildStatus fi } buildIsStillBroken () { for var3 in `cut -f 2 -d "=" badbuild` do # echo $var3 export BADBUILD=$var3 done p4 describe -s $BADBUILD >cldesc awk '{ FS = "@" ; print $4 }' cldesc >clparse1 sed s/@/" "/ clparse1 >clparse2 for var1 in `cut -f 1 -d " " clparse2 ` do echo "$var1" export SUBMITTER=$var1 echo "Perforce user = $SUBMITTER" done SUBMITTEREMAIL=`p4 user -o $SUBMITTER | grep Email: \ | grep -v \# | cut -b8-` echo "$submitteremail" FULLEMAIL="'$SUBMITTEREMAIL','$ADMINEMAIL'" sed -e s/SENDMAILTO/$FULLEMAIL/ stillBrokenTemplate >stillBroken1 sed -e s/CHANGELISTNUMBER/$SYNCTO/ stillBroken1 >stillBroken.py python stillBroken.py } for var3 in `cut -f 2 -d "=" lastBuildStatus ` do # echo $var3 export LASTBUILDSTATUS=$var3 done for var1 in `cut -f 2 -d "=" testCompile.ini ` do # echo "last build was $var1 " export LASTCHANGE=$var1 done # echo $LASTCHANGE check SYNC_RESULTS="./p4syncResult.txt" if [ -s "$SYNC_RESULTS" ]; then BUILDIT="1" else # p4review.py p4changes for var2 in `cut -f 2 -d "=" p4latestChange.txt ` do echo "last change was $var1 " export LASTCHANGE=$var2 sed -e s/clnumb=$var1/clnumb=$var2/ testCompile.ini >templast cp templast testCompile.ini done exit sed -e /s fi let SYNCTO=$var1+1 echo "syncing to $SYNCTO " p4 sync -n //depot/...@$SYNCTO >p4syncPreview.txt if [ -s "./p4syncPreview.txt" ]; then BUILDIT="2" sed -e s/clnumb=$var1/clnumb=$SYNCTO/ testCompile.ini >templast cp templast testCompile.ini else p4changes # echo "sync to $var1 " sed -e s/clnumb=$var1/clnumb=$SYNCTO/ testCompile.ini >templast cp templast testCompile.ini fi if [ $BUILDIT = "2" ] ; then echo "we have a build to cook..." if [ $LASTBUILDSTATUS = "bad" ] ; then echo "last build was bad"; sed -e s/CHANGELISTNUMBER/$SYNCTO/ testCompileErrorTemplate >testCompileError.py sed -e s/email/$EMAIL/ successTemp.py >successTemp1 sed -e s/CHANGELISTNUMBER/$SYNCTO/ successTemp1 >buildGood.py buildtheapp if [ "$BUILDFAILED" = "1" ] ; then p4 describe -s $SYNCTO >change.txt sed -e s/clnumb=$var1/clnumb=$SYNCTO/ testCompile.ini >templast cp templast testCompile.ini buildIsStillBroken else python buildGood.py fi fi if [ $LASTBUILDSTATUS = "good" ] ; then echo "last build was good" sed -e s/CHANGELISTNUMBER/$SYNCTO/ testCompileErrorTemplate >testCompileError.py sed -e s/CHANGELISTNUMBER/$SYNCTO/ successTemp.py >buildGood.py buildtheapp if [ "$BUILDFAILED" = "1" ] ; then sed -e s/clnumb=$var1/clnumb=$SYNCTO/ testCompile.ini >templast cp templast testCompile.ini echo "$SYNCTO">badbuild echo "this one failed" python testCompileError.py fi fi fi