TAGSFILE=onelab-tags.mk
TESTBUILDURL="http://build.one-lab.org/"
-TESTBOX=onelab-test.inria.fr
-TESTSCRIPT=plctest/TestMain.py
+TESTBOXSSH=root@onelab-test.inria.fr
+TESTSVNPATH="svn+ssh://build@svn.one-lab.org/svn/new_plc_api/trunk/plctest"
+TESTSCRIPT=TestMain.py
####################
# plc chroot runs in UTC
EOF
}
-# Notify recipient of failure
+# Notify recipient of failure or success, manage various stamps
function failure() {
+ set -x
touch ${BUILD}.broken
if [ -n "$MAILTO" ] ; then
tail -c 8k ${BUILD}/log-build.txt | mail -s "Failures for ${BUILD}" $MAILTO
}
function success () {
+ set -x
touch ${BUILD}.ok
if [ -n "$MAILTO" ] ; then
(echo "http://build.one-lab.org/$DISTRO/$BASE" ; echo "Completed on $(date)" ) | mail -s "Successfull build in ${BUILD}" $MAILTO
fi
+ cd ${ROOT}
+ rm -f latest
+ ln -s $BASE latest
exit 0
}
}
function build () {
- trap failure ERR INT
set -x
+ set -e
+ trap failure ERR INT
- echo -n "============================== Starting $COMMAND on "
+ echo -n "============================== Starting $COMMAND:build on "
date
cd $ROOT
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
-
}
function runtest () {
set -x
+ set -e
+ trap failure ERR INT
+
+ echo -n "============================== Starting $COMMAND:runtest on "
+ date
+
+ ### compute URL to the myplc package
build=$1; shift
buildname=$(basename $build)
- distroname=$(basename $(dirname $build))
cd $build
rpm=$(find RPMS -name myplc\*.rpm )
- url=${TESTBUILDURL}${distroname}/${buildname}/${rpm}
- ssh root@${TESTBOX} ${TESTSCRIPT} ${url}
+ url=${TESTBUILDURL}${DISTRO}/${buildname}/${rpm}
+
+ ### checkout the test material
+ svn co ${TESTSVNPATH} plctest
+ # compute test directory name on test box
+ testdir=plctest-${buildname}
+ # rsync/push test material onto the test box
+ ssh ${TESTBOXSSH} mkdir ${testdir}
+ rsync -a -v plctest/ ${TESTBOXSSH}/${testdir}
+ # invoke test on testbox
+ ssh ${TESTBOXSSH} ${testdir}/${TESTSCRIPT} ${url}
return $?
}
echo " -r TAGSTAG - a tag that refers to TAGSFILE - defaults to HEAD"
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"
function main () {
+ set -x
+
if [ -d /plc/devel/data ] ; then
do_chroot "$@"
else
MAKEVARS=()
MAKEOPTS=()
- while getopts "b:ued:t:r:B:s:nvm:s:Th" opt ; do
+ while getopts "b:ued:t:r:B:s:nm:s:Th" opt ; do
case $opt in
b) BASE=$OPTARG ;;
u) USEOLD=true ;;
BUILD=$ROOT/$BASE
if [ -z "$TESTONLY" ] ; then
- build >> ${BUILD}/log-build.txt 2>&1
+ build >> ${BUILD}/log-build.txt 2>&1
fi
- runtest ${BUILD} >> ${BUILD}/log-build.txt 2>&1
+ runtest ${BUILD} >> ${BUILD}/log-build.txt 2>&1
- success
+ success >> ${BUILD}/log-build.txt 2>&1
fi
}