runtest now svn checkouts the test material and runs in a build-dependant directory...
authorthierry <thierry@41d37cc5-eb28-0410-a9bf-d37491348ade>
Fri, 29 Jun 2007 10:01:00 +0000 (10:01 +0000)
committerthierry <thierry@41d37cc5-eb28-0410-a9bf-d37491348ade>
Fri, 29 Jun 2007 10:01:00 +0000 (10:01 +0000)
scripts/nightly-build.sh

index 728bd2c..9027331 100755 (executable)
@@ -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
 }