reviewed logging, and attempted to enable runtest
authorthierry <thierry@41d37cc5-eb28-0410-a9bf-d37491348ade>
Fri, 9 Nov 2007 19:08:48 +0000 (19:08 +0000)
committerthierry <thierry@41d37cc5-eb28-0410-a9bf-d37491348ade>
Fri, 9 Nov 2007 19:08:48 +0000 (19:08 +0000)
scripts/nightly-build-vserver.sh

index e39f036..f692266 100755 (executable)
@@ -3,7 +3,6 @@ REVISION=$(echo '$Revision$' | sed -e 's,\$,,g' -e 's,^\w*:\s,,' )
 
 COMMANDPATH=$0
 COMMAND=$(basename $0)
-#ROOT=/build
 
 # default values, tunable with command-line options
 DEFAULT_FC_DISTRO=fc6
@@ -11,21 +10,25 @@ SVNPATH="http://svn.one-lab.org/build/trunk"
 DISTRO=onelab
 MAILTO="onelab-build@one-lab.org"
 DISTROMAKETAGS=onelab-tags.mk
-PLEBOX=root@planet-lab.eu
+
+# web publishing results
+WEBPATH=/build/@DISTRO@/@BUILD@
+WEBLOG=/build/@DISTRO@/@BUILD@.txt
+
+# for the test part
 TESTBUILDURL="http://build.one-lab.org/"
 TESTBOX=onelab-test.inria.fr
 TESTBOXSSH=root@onelab-test.inria.fr
 TESTSVNPATH="http://svn.one-lab.org/new_plc_api/trunk/plctest"
 TESTSCRIPT=TestMain.py
-TESTSEND=TestSendMail
 ####################
-# plc chroot runs in UTC
+# assuming vserver runs in UTC
 DATE=$(date -u +'%Y.%m.%d')
 
 # Notify recipient of failure or success, manage various stamps 
 function failure() {
     set -x
-    (echo -n "============================== $COMMAND: failure at" ; date ; tail -c 20k /log-build.txt) >> /build.broken
+    (echo -n "============================== $COMMAND: failure at" ; date ; tail -c 20k /log-build.txt) >> $LOG
     if [ -n "$MAILTO" ] ; then
        tail -c 8k /log-build.txt | mail -s "Failures for ${BASE}" $MAILTO
     fi
@@ -34,13 +37,10 @@ function failure() {
 
 function success () {
     set -x
-    touch /build.ok
+    touch $(dirname $LOG)/build.ok
     if [ -n "$MAILTO" ] ; then
        (echo "http://build.one-lab.org/$DISTRO/$BASE" ; echo "Completed on $(date)" ) | mail -s "Successfull build for ${BASE}" $MAILTO
     fi
-#    cd ${ROOT}
-#    rm -f latest
-#    ln -s $BASE latest
     exit 0
 }
 
@@ -81,19 +81,13 @@ function runtest () {
     set -e
     trap failure ERR INT
 
-    echo -n"==============================> testing the sendmail service on PLE"
-    ssh ${PLEBOX} python -u /root/${TESTSEND} 
-
     echo -n "============================== Starting $COMMAND:runtest on "
     date
     
-
     ### compute URL to the myplc package
-    build=$1; shift
-    buildname=$(basename $build)
-    cd $build
+    cd /build
     rpm=$(find RPMS -name myplc\*.rpm )
-    url=${TESTBUILDURL}${DISTRO}/${buildname}/${rpm}
+    url=${TESTBUILDURL}${DISTRO}/${BASE}/${rpm}
   ### checkout the test material
     svn co ${TESTSVNPATH} plctest
   # compute test directory name on test box
@@ -154,12 +148,11 @@ function usage () {
 function main () {
 
     set -x
+    set -e
 
     # preserve arguments for passing them again later
     declare -a argv
     for arg in "$@"; do argv=(${argv[@]} "$arg") ; done
-    # xxx 
-    for x in "${argv[@]}"; do echo 'argv>'$x'<' ; done
     
     # parse arguments
     MAKEVARS=()
@@ -206,9 +199,11 @@ function main () {
                exit 1
            fi
            # update build
-           LOG=/vservers/${BASE}.log
-           echo "XXXXXXXXXX $COMMAND: using existing vserver $BASE" $(date) >> $LOG 2>&1
-           vserver ${BASE} exec svn update /build >> $LOG 2>&1
+           LOG=/vservers/${BASE}/build/build-log.txt
+           # redirect stdout and stderr from now on
+           exec > $LOG 2>&1 
+           echo "XXXXXXXXXX $COMMAND: using existing vserver $BASE" $(date)
+           vserver ${BASE} exec svn update /build
        else
            # create vserver: check it does not exist yet
            i=
@@ -222,45 +217,51 @@ function main () {
                fi
            done
            BASE=${BASE}${i}
-           LOG=/vservers/${BASE}.log
-           echo "XXXXXXXXXX $COMMAND: creating vserver $BASE" $(date) >> $LOG 2>&1
-           show_env >> $LOG 2>&1
+           LOG=/vservers/${BASE}/build/build-log.txt
+           # redirect stdout and stderr from now on
+           exec > $LOG 2>&1 
+           echo "XXXXXXXXXX $COMMAND: creating vserver $BASE" $(date)
+           show_env
            ### extract vbuild.setup and run it
-           svn cat $SVNPATH/vbuild.setup > /tmp/vbuild-$$  2>> $LOG
-           svn cat $SVNPATH/${DISTRO}-devel.lst > /tmp/${DISTRO}-devel.lst  2>> $LOG
+           svn cat $SVNPATH/vbuild.setup > /tmp/vbuild-$$
+           svn cat $SVNPATH/${DISTRO}-devel.lst > /tmp/${DISTRO}-devel.lst
             # Create vserver
            cd /tmp
            chmod +x vbuild-$$
-           /tmp/vbuild-$$ ${BASE} ${FC_DISTRO} ${DISTRO} >> $LOG 2>&1
-           cd - > /dev/null
+           /tmp/vbuild-$$ ${BASE} ${FC_DISTRO} ${DISTRO}
+           cd -
            # Extract build
-           vserver ${BASE} exec svn checkout ${SVNPATH} /build  >> $LOG 2>&1
+           vserver ${BASE} exec svn checkout ${SVNPATH} /build
        fi
 
-       echo "XXXXXXXXXX $COMMAND: preparation of vserver $BASE done" $(date) >> $LOG 2>&1
+       echo "XXXXXXXXXX $COMMAND: preparation of vserver $BASE done" $(date)
        cp $COMMANDPATH /vservers/${BASE}/
        # invoke this command in the vserver
-       vserver ${BASE} exec /$COMMAND "${argv[@]}"  >> $LOG 2>&1
+       vserver ${BASE} exec /$COMMAND "${argv[@]}"
 
+       # publish
+       webpath=$(echo $WEBPATH | sed -e s,@DISTRO@,"$DISTRO",g -e s,@BUILD@,"$BASE",g)
+       weblog=$(echo $WEBLOG | sed -e s,@DISTRO@,"$DISTRO",g -e s,@BUILD@,"$BASE",g)
+       rm -f $webpath
+       ln -s /vservers/$BASE/build $webpath
+       rm -f $weblog
+       ln -s $LOG $weblog
+       
     else
+       LOG=/build/build-log.txt
        if [ -n "$DO_BUILD" ] ; then 
            build 
            touch /build-ok
        fi
     
-       # xxx - need to gather builds under the build index before we can re-enable this
-       #if [ -n "$DO_TEST" ] ; then 
-       #runtest ${BUILD} 
-       #fi
+       if [ -n "$DO_TEST" ] ; then 
+           runtest
+       fi
     
        success 
 
     fi
 
-    # todo : gather results from various vservers into a single build index
-    #ROOT=$ROOT/$DISTRO
-    #BUILD=$ROOT/$BASE
-       
 }  
 
 ##########