X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=vbuild-nightly.sh;h=2c8aaae12f3e308254475b8ff17173d39d819d95;hb=e363088bd9d90c05e00423821228c98793cae036;hp=ca966f5d937931d7d6ec19828f8973495d74ccda;hpb=84f374638262d33a2e4f4cf09600d15428eda2ea;p=build.git diff --git a/vbuild-nightly.sh b/vbuild-nightly.sh index ca966f5d..2c8aaae1 100755 --- a/vbuild-nightly.sh +++ b/vbuild-nightly.sh @@ -10,20 +10,30 @@ DEFAULT_PLDISTRO=planetlab DEFAULT_PERSONALITY=linux32 DEFAULT_BASE="@DATE@--@PLDISTRO@-@FCDISTRO@-@PERSONALITY@" DEFAULT_build_SVNPATH="http://svn.planet-lab.org/svn/build/trunk" -DEFAULT_TESTCONFIG="default" DEFAULT_IFNAME=eth0 -# web publishing results -DEFAULT_WEBPATH="/build/@PLDISTRO@/" - # default gpg path used in signing yum repo DEFAULT_GPGPATH="/etc/planetlab" # default email to use in gpg secring DEFAULT_GPGUID="root@$( /bin/hostname )" +# web publishing results +DEFAULT_WEBPATH="/build/@PLDISTRO@/" + # for the test part -DEFAULT_TESTBUILDURL="http://build.onelab.eu/" -TESTBOXSSH=root@testbox.onelab.eu +DEFAULT_TESTCONFIG="default" +x=$(hostname) +y=$(hostname|sed -e s,inria,,) +# INRIA defaults +if [ "$x" != "$y" ] ; then + DEFAULT_TESTBUILDURL="http://build.onelab.eu/" + DEFAULT_TESTMASTER="testmaster.onelab.eu" +else + DEFAULT_TESTBUILDURL="http://build.planet-lab.org/" + ### xxx change as appropriate + DEFAULT_TESTMASTER="p-testmaster.onelab.eu" +fi + #################### # assuming vserver runs in UTC DATE=$(date +'%Y.%m.%d') @@ -111,7 +121,7 @@ function failure() { echo "See full build log at ${LOG_URL}" ; \ echo "and tail version at ${LOG_URL}.ko" ; \ echo "See complete set of testlogs at ${TESTLOGS_URL}" ; \ - tail -c 30k ${WEBLOG} ) | mail -s "Failures with {MAIL_SUBJECT}" $MAILTO + tail -c 30k ${WEBLOG} ) | mail -s "Failures with ${MAIL_SUBJECT}" $MAILTO fi exit 1 } @@ -121,7 +131,7 @@ function success () { # early stage ? - let's not create /build/@PLDISTRO@ if [ ! -d ${WEBPATH} ] ; then WEBPATH=/tmp - WEBLOG=/tmp/vbuild-early.log.txt + WEBLOG=/tmp/vbuild-early-$(date +%Y-%m-%d).log.txt fi cp $LOG ${WEBLOG} summary $LOG >> ${WEBLOG} @@ -131,12 +141,13 @@ function success () { echo "See full build log at ${LOG_URL}" ; \ echo "See complete set of testlogs at ${TESTLOGS_URL}" ; \ ) > ${WEBLOG}.pass - rm -f ${WEBLOG}.ok ${WEBLOG}.ko + rm -f ${WEBLOG}.pkg-ok ${WEBLOG}.ko else ( \ - echo "Successfully built, no test requested" ; \ + echo "Successful package-only build, no test requested" ; \ echo "See full build log at ${LOG_URL}" ; \ - ) > ${WEBLOG}.ok + ) > ${WEBLOG}.pkg-ok + rm -f ${WEBLOG}.ko fi if [ -n "$MAILTO" ] ; then ( \ @@ -157,11 +168,6 @@ function build () { date cd /build - # if TAGSRELEASE specified : update PLDISTROTAGS with this tag - if [ -n "$TAGSRELEASE" ] ; then - svn up -r $TAGSRELEASE $PLDISTROTAGS - fi - show_env echo "Running make IN $(pwd)" @@ -224,14 +230,16 @@ function runtest () { exit 1 fi + testmaster_ssh="root@${TESTMASTER}" + # test directory name on test box testdir=${BASE} # clean it - ssh -n ${TESTBOXSSH} rm -rf ${testdir} + ssh -n ${testmaster_ssh} rm -rf ${testdir} # check it out - ssh -n ${TESTBOXSSH} svn co ${TESTS_SYSTEM_SVNPATH} ${testdir} + 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 ${TESTBOXSSH} svn co ${TESTS_SVNPATH} ${testdir}/tests + 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 @@ -241,11 +249,11 @@ function runtest () { # need to proceed despite of set -e success=true - ssh 2>&1 -n ${TESTBOXSSH} ${testdir}/runtest --build ${build_SVNPATH} --url ${url} $configs $test_env --all || success= + ssh 2>&1 -n ${testmaster_ssh} ${testdir}/runtest --build ${build_SVNPATH} --url ${url} $configs $test_env --all || success= # gather logs in the vserver mkdir -p /vservers/$BASE/build/testlogs - ssh 2>&1 -n ${TESTBOXSSH} tar -C ${testdir}/logs -cf - . | tar -C /vservers/$BASE/build/testlogs -xf - || true + ssh 2>&1 -n ${testmaster_ssh} tar -C ${testdir}/logs -cf - . | tar -C /vservers/$BASE/build/testlogs -xf - || true # push them to the build web chmod -R a+r /vservers/$BASE/build/testlogs/ rsync --archive --delete /vservers/$BASE/build/testlogs/ $WEBPATH/$BASE/testlogs/ @@ -320,7 +328,6 @@ function show_env () { echo MAKEVARS="${MAKEVARS[@]}" echo DRY_RUN="$DRY_RUN" echo PLDISTROTAGS="$PLDISTROTAGS" - echo TAGSRELEASE="$TAGSRELEASE" # this does not help, it's not yet set when we run show_env #echo WEBPATH="$WEBPATH" echo TESTBUILDURL="$TESTBUILDURL" @@ -345,20 +352,20 @@ function usage () { echo " -f fcdistro - defaults to $DEFAULT_FCDISTRO" echo " -d pldistro - defaults to $DEFAULT_PLDISTRO" echo " -p personality - defaults to $DEFAULT_PERSONALITY" + echo " -m mailto - no default" + echo " -s svnpath - where to fetch the build module - defaults to $DEFAULT_build_SVNPATH" + echo " -t pldistrotags - defaults to \${PLDISTRO}-tags.mk" echo " -b base - defaults to $DEFAULT_BASE" echo " @NAME@ replaced as appropriate" echo " -o base: (overwrite) do not re-create vserver, re-use base instead" - echo " the -f/-d/-t/-s/-p/-m options are uneffective in this case" - echo " -t pldistrotags - defaults to \${PLDISTRO}-tags.mk" - echo " -r tagsrelease - a release number that refers to PLDISTROTAGS - defaults to HEAD" - echo " -s svnpath - where to fetch the build module - defaults to $DEFAULT_build_SVNPATH" + echo " the -f/-d/-p/-m/-s/-t options are uneffective in this case" echo " -c testconfig - defaults to $DEFAULT_TESTCONFIG" echo " -w webpath - defaults to $DEFAULT_WEBPATH" echo " -W testbuildurl - defaults to $DEFAULT_TESTBUILDURL" + 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" echo " -u gpg email used in secring. Defaults to $DEFAULT_GPGUID" - echo " -m mailto - no default" echo " -B : run build only" echo " -T : run test only" echo " -n dry-run : -n passed to make - vserver gets created though - no mail sent" @@ -379,23 +386,23 @@ function main () { DO_BUILD=true DO_TEST=true SIGNYUMREPO="" - while getopts "f:d:p:b:o:t:r:s:x:c:w:W:g:u:m:BTnyv7i:" opt ; do + while getopts "f:d:p:m:s:t:b:o:c:w:W:M:yg:u:BTnv7i:" opt ; do case $opt in f) FCDISTRO=$OPTARG ;; d) PLDISTRO=$OPTARG ;; p) PERSONALITY=$OPTARG ;; + m) MAILTO=$OPTARG ;; + s) build_SVNPATH=$OPTARG ;; + t) PLDISTROTAGS=$OPTARG ;; b) BASE=$OPTARG ;; o) OVERBASE=$OPTARG ;; - t) PLDISTROTAGS=$OPTARG ;; - r) TAGSRELEASE=$OPTARG ;; - s) build_SVNPATH=$OPTARG ;; c) TESTCONFIG="$TESTCONFIG $OPTARG" ;; w) WEBPATH=$OPTARG ;; W) TESTBUILDURL=$OPTARG ;; + M) TESTMASTER=$OPTARG ;; y) SIGNYUMREPO=true ;; g) GPGPATH=$OPTARG ;; u) GPGUID=$OPTARG ;; - m) MAILTO=$OPTARG ;; B) DO_TEST= ;; T) DO_BUILD= ;; n) DRY_RUN="-n" ;;