Tagging module nodeconfig - nodeconfig-4.3-3
[build.git] / vbuild-nightly.sh
index cccc229..49e10f2 100755 (executable)
@@ -17,22 +17,24 @@ DEFAULT_GPGPATH="/etc/planetlab"
 # default email to use in gpg secring
 DEFAULT_GPGUID="root@$( /bin/hostname )"
 
-# web publishing results
-DEFAULT_WEBPATH="/build/@PLDISTRO@/"
+DEFAULT_TESTCONFIG="default"
 
-# for the test part
+# for publishing results, and the tests settings
 x=$(hostname)
 y=$(hostname|sed -e s,inria,,)
 # INRIA defaults
 if [ "$x" != "$y" ] ; then
+    DEFAULT_WEBPATH="/build/@PLDISTRO@/"
     DEFAULT_TESTBUILDURL="http://build.onelab.eu/"
+    # this is where the buildurl is pointing towards
+    DEFAULT_WEBROOT="/build/"
     DEFAULT_TESTMASTER="testmaster.onelab.eu"
-    DEFAULT_TESTCONFIG="1default"
 else
+    DEFAULT_WEBPATH="/build/@FCDISTRO@/@PLDISTRO@/"
     DEFAULT_TESTBUILDURL="http://build.planet-lab.org/"
-    ### xxx change as appropriate
-    DEFAULT_TESTMASTER="p-testmaster.onelab.eu"
-    DEFAULT_TESTCONFIG="pdefault"
+    # this is where the buildurl is pointing towards
+    DEFAULT_WEBROOT="/build/"
+    DEFAULT_TESTMASTER="manager.test.planet-lab.org"
 fi    
 
 ####################
@@ -50,7 +52,7 @@ function summary () {
 # read a full log and tries to extract the interesting stuff
 
 import sys,re
-m_show_line=re.compile(".* BEG (RPM|VSERVER).*|.*'boot'.*|\* .*|.*is not installed.*|.*PROPFIND.*|.*Starting.*:runtest.*")
+m_show_line=re.compile(".* BEG (RPM|VSERVER).*|.*'boot'.*|\* .*|.*is not installed.*|.*PROPFIND.*|.*Starting.*:run_log.*")
 m_installing_any=re.compile('\r  (Installing:[^\]]*]) ')
 m_installing_err=re.compile('\r  (Installing:[^\]]*])(..+)')
 m_installing_end=re.compile('Installed:.*')
@@ -179,6 +181,9 @@ function build () {
     MAKEVARS=("build-SVNPATH=${build_SVNPATH}" "${MAKEVARS[@]}")
     MAKEVARS=("PERSONALITY=${PERSONALITY}" "${MAKEVARS[@]}")
     MAKEVARS=("MAILTO=${MAILTO}" "${MAKEVARS[@]}")
+    MAKEVARS=("WEBPATH=${WEBPATH}" "${MAKEVARS[@]}")
+    MAKEVARS=("TESTBUILDURL=${TESTBUILDURL}" "${MAKEVARS[@]}")
+    MAKEVARS=("WEBROOT=${WEBROOT}" "${MAKEVARS[@]}")
 
     MAKEVARS=("BASE=${BASE}" "${MAKEVARS[@]}")
 
@@ -195,12 +200,12 @@ function build () {
 
 # this was formerly run in the myplc-devel chroot but now is run in the root context,
 # this is so that the .ssh config gets done manually, and once and for all
-function runtest () {
+function run_log () {
     set -x
     set -e
     trap failure ERR INT
 
-    echo -n "============================== Starting $COMMAND:runtest on $(date)"
+    echo -n "============================== Starting $COMMAND:run_log on $(date)"
 
     # where to find TESTS_SVNPATH
     stamp=/vservers/$BASE/build/tests_svnpath
@@ -210,9 +215,7 @@ function runtest () {
        exit 1
     fi
     TESTS_SVNPATH=$(cat $stamp)
-    # xxx - Thierry - need to rework the test framework in tests/system so it can work
-    # with the entire tests/ module checked out, rather than only tests/system/ 
-    # ugly workaround for now
+    # don't need the tests fulltree anymore
     TESTS_SYSTEM_SVNPATH=${TESTS_SVNPATH}/system
 
     ### the URL to the RPMS/<arch> location
@@ -220,7 +223,9 @@ function runtest () {
     for a in i386 x86_64; do
        archdir=/vservers/$BASE/build/RPMS/$a
        if [ -d $archdir ] ; then
-           url=$(echo $archdir | sed -e "s,/vservers/$BASE/build,${TESTBUILDURL}${PLDISTRO}/${BASE},")
+           # where was that installed
+           url=$(echo $archdir | sed -e "s,/vservers/${BASE}/build,${WEBPATH}/${BASE},")
+           url=$(echo $url | sed -e "s,${WEBROOT},${TESTBUILDURL},")
            break
        fi
     done
@@ -239,8 +244,8 @@ function runtest () {
     ssh -n ${testmaster_ssh} rm -rf ${testdir}
     # check it out 
     ssh -n ${testmaster_ssh} svn co ${TESTS_SYSTEM_SVNPATH} ${testdir}
-    # check out the entire tests/ module (with system/ duplicated) as a subdir - see xxx above
-    ssh -n ${testmaster_ssh} svn co ${TESTS_SVNPATH} ${testdir}/tests
+###    # check out the entire tests/ module (with system/ duplicated) as a subdir - see fulltree above
+###    ssh -n ${testmaster_ssh} svn co ${TESTS_SVNPATH} ${testdir}/tests
     # invoke test on testbox - pass url and build url - so the tests can use vtest-init-vserver.sh
     configs=""
     for config in ${TESTCONFIG} ; do
@@ -250,7 +255,7 @@ function runtest () {
 
     # need to proceed despite of set -e
     success=true
-    ssh 2>&1 -n ${testmaster_ssh} ${testdir}/runtest --build ${build_SVNPATH} --url ${url} $configs $test_env --all || success=
+    ssh 2>&1 -n ${testmaster_ssh} ${testdir}/run_log --build ${build_SVNPATH} --url ${url} $configs $test_env --verbose --all || success=
 
     # gather logs in the vserver
     mkdir -p /vservers/$BASE/build/testlogs
@@ -263,7 +268,7 @@ function runtest () {
        failure
     fi
     
-    echo -n "============================== End $COMMAND:runtest on $(date)"
+    echo -n "============================== End $COMMAND:run_log on $(date)"
 }
 
 function in_root_context () {
@@ -363,6 +368,7 @@ function usage () {
     echo " -c testconfig - defaults to $DEFAULT_TESTCONFIG"
     echo " -w webpath - defaults to $DEFAULT_WEBPATH"
     echo " -W testbuildurl - defaults to $DEFAULT_TESTBUILDURL"
+    echo " -r webroot - defaults to $DEFAULT_WEBROOT - the fs point where testbuildurl actually sits"
     echo " -M testmaster - defaults to $DEFAULT_TESTMASTER"
     echo " -y sign yum repo in webpath"
     echo " -g path to gpg secring used to sign rpms.  Defaults to $DEFAULT_GPGPATH" 
@@ -387,7 +393,7 @@ function main () {
     DO_BUILD=true
     DO_TEST=true
     SIGNYUMREPO=""
-    while getopts "f:d:p:m:s:t:b:o:c:w:W:M:yg:u:BTnv7i:" opt ; do
+    while getopts "f:d:p:m:s:t:b:o:c:w:W:r:M:yg:u:BTnv7i:" opt ; do
        case $opt in
            f) FCDISTRO=$OPTARG ;;
            d) PLDISTRO=$OPTARG ;;
@@ -400,6 +406,7 @@ function main () {
            c) TESTCONFIG="$TESTCONFIG $OPTARG" ;;
            w) WEBPATH=$OPTARG ;;
            W) TESTBUILDURL=$OPTARG ;;
+           r) WEBROOT=$OPTARG ;;
            M) TESTMASTER=$OPTARG ;;
             y) SIGNYUMREPO=true ;;
             g) GPGPATH=$OPTARG ;;
@@ -438,6 +445,7 @@ function main () {
     [ -z "$BASE" ] && BASE="$DEFAULT_BASE"
     [ -z "$WEBPATH" ] && WEBPATH="$DEFAULT_WEBPATH"
     [ -z "$TESTBUILDURL" ] && TESTBUILDURL="$DEFAULT_TESTBUILDURL"
+    [ -z "$WEBROOT" ] && WEBROOT="$DEFAULT_WEBROOT"
     [ -z "$GPGPATH" ] && GPGPATH="$DEFAULT_GPGPATH"
     [ -z "$GPGUID" ] && GPGUID="$DEFAULT_GPGUID"
     [ -z "$IFNAME" ] && IFNAME="$DEFAULT_IFNAME"
@@ -506,6 +514,9 @@ function main () {
            build_SVNPATH=$(vserver ${BASE} exec make --no-print-directory -C /build stage1=skip +build-SVNPATH)
            PERSONALITY=$(vserver ${BASE} exec make --no-print-directory -C /build stage1=skip +PERSONALITY)
            MAILTO=$(vserver ${BASE} exec make --no-print-directory -C /build stage1=skip +MAILTO)
+           WEBPATH=$(vserver ${BASE} exec make --no-print-directory -C /build stage1=skip +WEBPATH)
+           TESTBUILDURL=$(vserver ${BASE} exec make --no-print-directory -C /build stage1=skip +TESTBUILDURL)
+           WEBROOT=$(vserver ${BASE} exec make --no-print-directory -C /build stage1=skip +WEBROOT)
            show_env
        else
            # create vserver: check it does not exist yet
@@ -562,8 +573,8 @@ function main () {
         # where to store the log for web access
        WEBLOG=${WEBPATH}/${BASE}.log.txt
         # compute the log URL - inserted in the mail messages for convenience
-       LOG_URL=$(echo ${WEBLOG} | sed -e "s,//,/,g" -e "s,/build/,${TESTBUILDURL},")
-       TESTLOGS_URL=$(echo ${WEBPATH}/${BASE}/testlogs | sed -e "s,//,/,g" -e "s,/build/,${TESTBUILDURL},")
+       LOG_URL=$(echo ${WEBLOG} | sed -e "s,//,/,g" -e "s,${WEBROOT},${TESTBUILDURL},")
+       TESTLOGS_URL=$(echo ${WEBPATH}/${BASE}/testlogs | sed -e "s,//,/,g" -e "s,${WEBROOT},${TESTBUILDURL},")
     
        if [ -n "$DO_BUILD" ] ; then 
 
@@ -574,7 +585,7 @@ function main () {
            vserver ${BASE} exec /build/$COMMAND "${options[@]}" -b "${BASE}" "${MAKEVARS[@]}" "${MAKETARGETS[@]}"
        fi
 
-       # publish to the web so runtest can find them
+       # publish to the web so run_log can find them
        rm -rf $WEBPATH/$BASE ; mkdir -p $WEBPATH/$BASE/{RPMS,SRPMS}
        rsync --archive --delete --verbose /vservers/$BASE/build/RPMS/ $WEBPATH/$BASE/RPMS/
        rsync --archive --delete --verbose /vservers/$BASE/build/SRPMS/ $WEBPATH/$BASE/SRPMS/
@@ -587,7 +598,7 @@ function main () {
        fi
 
        if [ -n "$DO_TEST" ] ; then 
-           runtest
+           run_log
        fi
 
        success