X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=scripts%2Fnightly-build.sh;h=b1944ae841b31912378a57394d9c8e2671ad6595;hb=f5e10e01040fe30180de13260782424766ed8019;hp=ad8314651366417ce036a519baa3d827669f3eab;hpb=aeda30728a2e12d1225bef44b7ca5a9dc5362966;p=infrastructure.git diff --git a/scripts/nightly-build.sh b/scripts/nightly-build.sh index ad83146..b1944ae 100755 --- a/scripts/nightly-build.sh +++ b/scripts/nightly-build.sh @@ -8,11 +8,15 @@ ROOT=/build CHROOTBINDIR=/root/bin # default values, tunable with command-line options -CVSROOT=":pserver:anon@cvs.planet-lab.org:/cvs" +SVNPATH="svn+ssh://build@svn.one-lab.org/svn/build/trunk" DISTRO=onelab MAILTO="onelab-build@one-lab.org" TAGSFILE=onelab-tags.mk +TESTBUILDURL="http://onelab-build.inria.fr/" +TESTBOX=onelab-test.inria.fr +TESTSCRIPT=plctest/TestMain.py + #################### # plc chroot runs in UTC DATE=$(date -u +'%Y.%m.%d') @@ -26,6 +30,7 @@ EOF # Notify recipient of failure function failure() { + touch ${BUILD}.broken if [ -n "$MAILTO" ] ; then tail -c 8k ${BUILD}/log-build.txt | mail -s "Failures for ${BUILD}" $MAILTO fi @@ -33,9 +38,9 @@ function failure() { } function success () { - touch ${BUILD}/log-success.stamp + touch ${BUILD}.ok if [ -n "$MAILTO" ] ; then - date | mail -s "Successfull build in ${BUILD}" $MAILTO + (echo "http://build.one-lab.org/$DISTRO/$BASE" ; echo "Completed on $(date)" ) | mail -s "Successfull build in ${BUILD}" $MAILTO fi exit 0 } @@ -69,54 +74,69 @@ function build () { date cd $ROOT - cvs -d $CVSROOT co -d $BASE build + svn co $SVNPATH $BASE # if TAGSTAG specified : update TAGSFILE with this tag if [ -n "$TAGSTAG" ] ; then cd $BASE - cvs up -r $TAGSTAG $TAGSFILE + svn up -r $TAGSTAG $TAGSFILE cd - fi show_env 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 - success +} + +function runtest () { + set -x + build=$1; shift + buildname=$(basename $build) + distroname=$(basename $(dirname $build)) + cd build + rpm=$(find . -name myplc\*.rpm ) + url=${TESTBUILDURL}${distroname}/${buildname}/${rpm} + ssh root@${TESTBOX} ${TESTSCRIPT} ${url} + return $? } function show_env () { echo ROOT=$ROOT - echo BASE=$BASE echo DISTRO=$DISTRO + echo BASE=$BASE + echo SVNPATH=$SVNPATH echo MAKEVARS="${MAKEVARS[@]}" echo MAKEOPTS="${MAKEOPTS[@]}" - echo TAGSFILE=$TAGSFILE - echo "XXXXXXXXXXXXXXXXXXXX Contents of $TAGSFILE" + echo TAGSFILE="$TAGSFILE" + echo TAGSTAG="$TAGSTAG" + echo "XXXXXXXXXXXXXXXXXXXX Contents of tags definition file $TAGSFILE" cat $BASE/$TAGSFILE - echo "XXXXXXXXXXXXXXXXXXXX end contents" + echo "XXXXXXXXXXXXXXXXXXXX end tags definition" } function usage () { echo "Usage: $COMMAND [option] make-targets" echo "This is revision $REVISION" echo "Supported options" - echo " -v verbose" - echo " -b BASE - may include %d then is replaced with current date" + echo " -b BASE - may include @, then replaced with current date" echo " -u : uses directory given as BASE as is, even if already exists" echo " -e : exits (does nothing) if BASE already exists" - echo " -c CVSROOT" echo " -d DISTRO" echo " -t TAGSFILE" echo " -r TAGSTAG - a tag that refers to TAGSFILE - defaults to HEAD" - echo " -m MAILTO" 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" exit 1 } @@ -127,34 +147,34 @@ function main () { else MAKEVARS=() MAKEOPTS=() - while getopts "vc:t:r:m:d:b:s:uenh" opt ; do + while getopts "b:ued:t:r:B:s:nvm:s:Th" opt ; do case $opt in - v) set -x ;; - c) CVSROOT=$OPTARG ;; - t) TAGSFILE=$OPTARG ;; - r) TAGSTAG=$OPTARG ;; - m) MAILTO=$OPTARG ;; - d) DISTRO=$OPTARG ;; b) BASE=$OPTARG ;; u) USEOLD=true ;; e) EXITIFOLD=true ;; + d) DISTRO=$OPTARG ;; + t) TAGSFILE=$OPTARG ;; + r) TAGSTAG=$OPTARG ;; s) MAKEVARS=(${MAKEVARS[@]} $OPTARG) ;; n) MAILTO="" ; MAKEOPTS=(${MAKEOPTS[@]} -n) ;; + v) set -x ;; + m) MAILTO=$OPTARG ;; + s) SVNPATH=$OPTARG ;; + T) TESTONLY=true ; USEOLD=true ;; h|*) usage ;; esac done - ROOT=$ROOT/$DISTRO - shift $(($OPTIND - 1)) + ROOT=$ROOT/$DISTRO + cd $ROOT + MAKETARGETS="$@" - cd $ROOT ### set BASE from DISTRO, if unspecified [ -z "$BASE" ] && BASE=${DISTRO} - - BASE=$(echo ${BASE} | sed -e "s,%d,${DATE},g") + BASE=$(echo ${BASE} | sed -e "s,@,${DATE},g") if [ -n "$EXITIFOLD" -a -d "$BASE" ] ; then echo "$COMMAND: -e : exits on existing base directory $BASE" @@ -170,7 +190,14 @@ function main () { fi BUILD=$ROOT/$BASE - build >> ${BUILD}/log-build.txt 2>&1 + if [ -z "$TESTONLY" ] ; then + build >> ${BUILD}/log-build.txt 2>&1 + fi + + runtest ${BUILD} >> ${BUILD}/log-build.txt 2>&1 + + success + fi }