X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=lbuild-nightly.sh;h=f7144e52fb73d8c234954d8838279967804aeeb5;hb=139959af774cdf79520850293c4060c1d4f94f66;hp=9f21c36068919809a0fab8ced2931f8a5b4a2b61;hpb=2f3e50cfc0a2326cff025c9b24b5cdd3e2d634e4;p=build.git diff --git a/lbuild-nightly.sh b/lbuild-nightly.sh index 9f21c360..f7144e52 100755 --- a/lbuild-nightly.sh +++ b/lbuild-nightly.sh @@ -11,10 +11,10 @@ COMMAND=$(basename $0) export PATH=$PATH:/bin:/sbin # default values, tunable with command-line options -DEFAULT_FCDISTRO=f29 +DEFAULT_FCDISTRO=f39 DEFAULT_PLDISTRO=lxc DEFAULT_PERSONALITY=linux64 -DEFAULT_MAILDEST="build at onelab.eu" +DEFAULT_MAILDEST="thierry.parmentelat at inria.fr" DEFAULT_BUILD_SCM_URL="git://git.onelab.eu/build" DEFAULT_BASE="@DATE@--@PLDISTRO@-@FCDISTRO@-@PERSONALITY@" @@ -60,10 +60,17 @@ function logfile () { function guest_ipv4() { lxc=$1; shift - mac=$(virsh -c lxc:/// domiflist $lxc | egrep 'network|bridge' | awk '{print $5;}') - # sanity check - [ -z "$mac" ] && return 0 - arp -en | grep "$mac" | awk '{print $1;}' + mac=$(virsh -c lxc:/// domiflist $lxc | grep -E 'network|bridge' | awk '{print $5;}') + [ -z "$mac" ] && { echo 1>&2 guest_ipv4 cannot find mac; return 1; } + ip=$(arp -en | grep "$mac" | awk '{print $1;}') + # if not known: run a ping and try again + if [ -z $ip ]; then + ping -c1 -w1 -W1 $lxc >& /dev/null + ping -c1 -w1 -W1 $lxc.pl.sophia.inria.fr >& /dev/null + ip=$(arp -en | grep "$mac" | awk '{print $1;}') + fi + [ -z "$ip" ] && { echo 1>&2 guest_ipv4 cannot find ip; return 1; } + echo $ip } # wrap a quick summary of suspicious stuff @@ -135,12 +142,20 @@ EOF ### we might build on a box other than the actual web server # utilities for handling the pushed material (rpms, logfiles, ...) -function webpublish_misses_dir () { ssh root@${WEBHOST} "bash -c \"test \! -d $1\"" ; } -function webpublish () { ssh root@${WEBHOST} "$@" ; } -function webpublish_cp_local_to_remote () { scp $1 root@${WEBHOST}:$2 ; } -function webpublish_cp_stdin_to_file () { ssh root@${WEBHOST} cat \> $1; } -function webpublish_append_stdin_to_file () { ssh root@${WEBHOST} cat \>\> $1; } -# provide remote dir as first argument, so any number of local files can be passed next +function webpublish_misses_dir () { + ssh root@${WEBHOST} "bash -c \"test \! -d $1\"" +} +function webpublish () { + ssh root@${WEBHOST} "$@" +} +function webpublish_cp_stdin_to_file () { + ssh root@${WEBHOST} cat \> $1 \; chmod g+r,o+r $1 +} +function webpublish_append_stdin_to_file () { + ssh root@${WEBHOST} cat \>\> $1 \; chmod g+r,o+r $1 +} +# provide remote dir as first argument, +# so any number of local files can be passed next function webpublish_rsync () { local remote="$1"; shift rsync --archive --delete $VERBOSE "$@" root@${WEBHOST}:"$remote" @@ -168,7 +183,7 @@ function failure() { WEBLOG=/tmp/lbuild-early-$(date +%Y-%m-%d).log.txt fi webpublish mkdir -p $WEBBASE ||: - webpublish_cp_local_to_remote $LOG $WEBLOG ||: + webpublish_rsync $WEBLOG $LOG ||: summary $LOG | webpublish_append_stdin_to_file $WEBLOG ||: (echo -n "============================== $COMMAND: failure at " ; date ; \ webpublish tail --lines=1000 $WEBLOG) | \ @@ -196,7 +211,7 @@ function success () { WEBLOG=/tmp/lbuild-early-$(date +%Y-%m-%d).log.txt fi webpublish mkdir -p $WEBBASE - webpublish_cp_local_to_remote $LOG $WEBLOG + webpublish_rsync $WEBLOG $LOG summary $LOG | webpublish_append_stdin_to_file $WEBLOG if [ -n "$DO_TEST" ] ; then short_message="PASS" @@ -325,7 +340,8 @@ function run_log () { ssh -n ${testmaster_ssh} rm -rf ${testdir} ${testdir}.git # check it out in the build - run_in_build_guest $BASE make -C /build tests-module ${MAKEVARS[@]} + # as well as build that might not be here esp. in a short build + run_in_build_guest $BASE make -C /build tests-module build-module ${MAKEVARS[@]} # push it onto the testmaster - just the 'system' subdir is enough rsync --verbose --archive $(rootdir $BASE)/build/MODULES/tests/system/ ${testmaster_ssh}:${BASE}