From 00271e683e69beb72a69a7a19f8cad1d1f1839dc Mon Sep 17 00:00:00 2001 From: thierry Date: Fri, 9 Nov 2007 19:08:48 +0000 Subject: [PATCH] reviewed logging, and attempted to enable runtest --- scripts/nightly-build-vserver.sh | 81 ++++++++++++++++---------------- 1 file changed, 41 insertions(+), 40 deletions(-) diff --git a/scripts/nightly-build-vserver.sh b/scripts/nightly-build-vserver.sh index e39f036..f692266 100755 --- a/scripts/nightly-build-vserver.sh +++ b/scripts/nightly-build-vserver.sh @@ -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 - } ########## -- 2.43.0