From: thierry Date: Fri, 29 Jun 2007 10:01:00 +0000 (+0000) Subject: runtest now svn checkouts the test material and runs in a build-dependant directory... X-Git-Tag: foo~453 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=64119d7639a14442a8ce3453e1c27bbf11f0982c;p=infrastructure.git runtest now svn checkouts the test material and runs in a build-dependant directory on the test box -- the logic build-runtest-success-failure reviewed, was crappy --- diff --git a/scripts/nightly-build.sh b/scripts/nightly-build.sh index 728bd2c..9027331 100755 --- a/scripts/nightly-build.sh +++ b/scripts/nightly-build.sh @@ -14,8 +14,9 @@ MAILTO="onelab-build@one-lab.org" TAGSFILE=onelab-tags.mk TESTBUILDURL="http://build.one-lab.org/" -TESTBOX=onelab-test.inria.fr -TESTSCRIPT=plctest/TestMain.py +TESTBOXSSH=root@onelab-test.inria.fr +TESTSVNPATH="svn+ssh://build@svn.one-lab.org/svn/new_plc_api/trunk/plctest" +TESTSCRIPT=TestMain.py #################### # plc chroot runs in UTC @@ -28,8 +29,9 @@ $CHROOTBINDIR/$COMMAND $@ EOF } -# Notify recipient of failure +# Notify recipient of failure or success, manage various stamps function failure() { + set -x touch ${BUILD}.broken if [ -n "$MAILTO" ] ; then tail -c 8k ${BUILD}/log-build.txt | mail -s "Failures for ${BUILD}" $MAILTO @@ -38,10 +40,14 @@ function failure() { } function success () { + set -x touch ${BUILD}.ok if [ -n "$MAILTO" ] ; then (echo "http://build.one-lab.org/$DISTRO/$BASE" ; echo "Completed on $(date)" ) | mail -s "Successfull build in ${BUILD}" $MAILTO fi + cd ${ROOT} + rm -f latest + ln -s $BASE latest exit 0 } @@ -67,10 +73,11 @@ function use_base () { } function build () { - trap failure ERR INT set -x + set -e + trap failure ERR INT - echo -n "============================== Starting $COMMAND on " + echo -n "============================== Starting $COMMAND:build on " date cd $ROOT @@ -88,22 +95,32 @@ function build () { echo "Running make IN build $(pwd)" make stage1=true ${MAKEOPTS[@]} TAGSFILE=${TAGSFILE} PLDISTRO=${DISTRO} ${MAKEVARS[@]} -C $BASE $MAKETARGETS make ${MAKEOPTS[@]} TAGSFILE=${TAGSFILE} PLDISTRO=${DISTRO} ${MAKEVARS[@]} -C $BASE $MAKETARGETS - - # only if successful - rm -f latest - ln -s $BASE latest - } function runtest () { set -x + set -e + trap failure ERR INT + + echo -n "============================== Starting $COMMAND:runtest on " + date + + ### compute URL to the myplc package build=$1; shift buildname=$(basename $build) - distroname=$(basename $(dirname $build)) cd $build rpm=$(find RPMS -name myplc\*.rpm ) - url=${TESTBUILDURL}${distroname}/${buildname}/${rpm} - ssh root@${TESTBOX} ${TESTSCRIPT} ${url} + url=${TESTBUILDURL}${DISTRO}/${buildname}/${rpm} + + ### checkout the test material + svn co ${TESTSVNPATH} plctest + # compute test directory name on test box + testdir=plctest-${buildname} + # rsync/push test material onto the test box + ssh ${TESTBOXSSH} mkdir ${testdir} + rsync -a -v plctest/ ${TESTBOXSSH}/${testdir} + # invoke test on testbox + ssh ${TESTBOXSSH} ${testdir}/${TESTSCRIPT} ${url} return $? } @@ -133,7 +150,6 @@ function usage () { echo " -r TAGSTAG - a tag that refers to TAGSFILE - defaults to HEAD" echo " -s MAKEVAR=value - spaces in value are not supported" echo " -n passed to make" - echo " -v verbose" echo " -m MAILTO" echo " -s SVNPATH" echo " -T : run test only" @@ -142,12 +158,14 @@ function usage () { function main () { + set -x + if [ -d /plc/devel/data ] ; then do_chroot "$@" else MAKEVARS=() MAKEOPTS=() - while getopts "b:ued:t:r:B:s:nvm:s:Th" opt ; do + while getopts "b:ued:t:r:B:s:nm:s:Th" opt ; do case $opt in b) BASE=$OPTARG ;; u) USEOLD=true ;; @@ -191,12 +209,12 @@ function main () { BUILD=$ROOT/$BASE if [ -z "$TESTONLY" ] ; then - build >> ${BUILD}/log-build.txt 2>&1 + build >> ${BUILD}/log-build.txt 2>&1 fi - runtest ${BUILD} >> ${BUILD}/log-build.txt 2>&1 + runtest ${BUILD} >> ${BUILD}/log-build.txt 2>&1 - success + success >> ${BUILD}/log-build.txt 2>&1 fi }