X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=vbuild-nightly.sh;h=7ee1aefc4cf517ccb7a3cda45e338622e56d70a6;hb=refs%2Fheads%2Fcoblitz;hp=aa20facee5a855b48f50d36cd3c130220023e691;hpb=eac1241c8f5f16ff4d072a971445a9c827cb6abe;p=build.git diff --git a/vbuild-nightly.sh b/vbuild-nightly.sh index aa20face..7ee1aefc 100755 --- a/vbuild-nightly.sh +++ b/vbuild-nightly.sh @@ -11,7 +11,6 @@ DEFAULT_PERSONALITY=linux32 DEFAULT_BASE="@DATE@--@PLDISTRO@-@FCDISTRO@-@PERSONALITY@" DEFAULT_BUILD_SCM_URL="git://git.onelab.eu/build" DEFAULT_IFNAME=eth0 -DEFAULT_BUILD_BRANCH="master" # default gpg path used in signing yum repo DEFAULT_GPGPATH="/etc/planetlab" @@ -19,6 +18,8 @@ DEFAULT_GPGPATH="/etc/planetlab" DEFAULT_GPGUID="root@$( /bin/hostname )" DEFAULT_TESTCONFIG="default" +# for passing args to run_log +RUN_LOG_EXTRAS="" # for publishing results, and the tests settings x=$(hostname) @@ -136,7 +137,7 @@ function failure() { webpublish_cp_stdin_to_file $WEBBASE.ko ||: if [ -n "$MAILTO" ] ; then ( \ - echo "Subject: Failures with $MAIL_SUBJECT $BASE on $(hostname)" ; \ + echo "Subject: KO ${BASE} ${MAIL_SUBJECT}" ; \ echo "To: $MAILTO" ; \ echo "See full build log at $WEBBASE_URL/log.txt" ; \ echo "and tail version at $WEBBASE_URL.ko" ; \ @@ -175,7 +176,7 @@ function success () { fi if [ -n "$MAILTO" ] ; then ( \ - echo "Subject: Success with ${MAIL_SUBJECT} ${BASE} on $(hostname)" ; \ + echo "Subject: PASS ${BASE} ${MAIL_SUBJECT}" ; \ echo "To: $MAILTO" ; \ echo "$PLDISTRO ($BASE) build for $FCDISTRO completed on $(date)" ; \ echo "See full build log at $WEBBASE_URL/log.txt" ; \ @@ -217,6 +218,9 @@ function build () { MAKEVARS=("BASE=${BASE}" "${MAKEVARS[@]}") + # initialize latex + /build/latex-first-run.sh || : + # stage1 make -C /build $DRY_RUN "${MAKEVARS[@]}" stage1=true # versions @@ -271,16 +275,12 @@ function run_log () { rsync --verbose --archive /vservers/$BASE/build/MODULES/build ${testmaster_ssh}:${BASE}/ # invoke test on testbox - pass url and build url - so the tests can use vtest-init-vserver.sh - configs="" - for config in ${TESTCONFIG} ; do - configs="$configs --config $config" - done - test_env="-p $PERSONALITY -d $PLDISTRO -f $FCDISTRO" + run_log_env="-p $PERSONALITY -d $PLDISTRO -f $FCDISTRO" # need to proceed despite of set -e success=true # passing the build_scm_url should not be needed anymore - ssh 2>&1 -n ${testmaster_ssh} ${testdir}/run_log --build ${BUILD_SCM_URL} --url ${url} $configs $test_env $VERBOSE --all || success= + ssh 2>&1 -n ${testmaster_ssh} ${testdir}/run_log --build ${BUILD_SCM_URL} --url ${url} $run_log_env $RUN_LOG_EXTRAS $VERBOSE --all || success= # gather logs in the build vserver mkdir -p /vservers/$BASE/build/testlogs @@ -360,7 +360,6 @@ function show_env () { echo PERSONALITY=$PERSONALITY echo BASE=$BASE echo BUILD_SCM_URL=$BUILD_SCM_URL - echo BUILD_BRANCH=$BUILD_BRANCH echo MAKEVARS="${MAKEVARS[@]}" echo DRY_RUN="$DRY_RUN" echo PLDISTROTAGS="$PLDISTROTAGS" @@ -409,17 +408,20 @@ function usage () { echo " -p personality - defaults to $DEFAULT_PERSONALITY" echo " -m mailto - no default" echo " -s build_scm_url - git or svn URL where to fetch the build module - defaults to $DEFAULT_BUILD_SCM_URL" + echo " define GIT tag or branch name appending @tagname to url" 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/-p/-m/-s/-t options are uneffective in this case" echo " -c testconfig - defaults to $DEFAULT_TESTCONFIG" + echo " -y {pl,pg} - passed to run_log" + echo " -x - a hook to pass arguments to run_log" echo " -w webpath - defaults to $DEFAULT_WEBPATH" echo " -W testbuildurl - defaults to $DEFAULT_TESTBUILDURL; this is also used to get the hostname where to publish builds" 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 " -Y - sign yum repo in webpath" echo " -g gpg_path - to the gpg secring used to sign rpms. Defaults to $DEFAULT_GPGPATH" echo " -u gpg_uid - email used in secring. Defaults to $DEFAULT_GPGUID" echo " -K svnsshkey - specify key to use when svn+ssh:// URLs are used for SVNPATH" @@ -449,7 +451,7 @@ function main () { SIGNYUMREPO="" OPTS_ORIG=$@ - OPTS=$(getopt -o "f:d:p:m:s:t:b:o:c:w:W:r:M:yg:u:K:SBTnv7i:h" -l "build-branch:" -- $@) + OPTS=$(getopt -o "f:d:p:m:s:t:b:o:c:y:x:w:W:r:M:Yg:u:K:SBTnv7i:h" -l "build-branch:" -- $@) if [ $? != 0 ] then usage @@ -466,11 +468,13 @@ function main () { -b) BASE=$2; shift 2 ;; -o) OVERBASE=$2; shift 2 ;; -c) TESTCONFIG="$TESTCONFIG $2"; shift 2 ;; + -y) RUN_LOG_EXTRAS="$RUN_LOG_EXTRAS -y $2"; shift 2 ;; + -x) RUN_LOG_EXTRAS="$RUN_LOG_EXTRAS $2"; shift 2;; -w) WEBPATH=$2; shift 2 ;; -W) TESTBUILDURL=$2; shift 2 ;; -r) WEBROOT=$2; shift 2 ;; -M) TESTMASTER=$2; shift 2 ;; - -y) SIGNYUMREPO=true; shift ;; + -Y) SIGNYUMREPO=true; shift ;; -g) GPGPATH=$2; shift 2 ;; -u) GPGUID=$2; shift 2 ;; -K) SSH_KEY=$2; shift 2 ;; @@ -482,18 +486,12 @@ function main () { -7) BASE="$(date +%a|tr A-Z a-z)-@FCDISTRO@" ; shift ;; -i) IFNAME=$2; shift 2 ;; -h) usage ; shift ;; - --build-branch) BUILD_BRANCH=$2; shift 2 ;; --) shift; break ;; esac done - eval set -- "$OPTS_ORIG" - - # preserve options for passing them again later, together with expanded base - declare -a options - toshift=$(($OPTIND - 1)) - arg=1; while [ $arg -le $toshift ] ; do options=(${options[@]} "$1") ; shift; arg=$(($arg+1)) ; done + options=$OPTS_ORIG # allow var=value stuff; for target in "$@" ; do @@ -519,11 +517,16 @@ function main () { [ -z "$GPGUID" ] && GPGUID="$DEFAULT_GPGUID" [ -z "$IFNAME" ] && IFNAME="$DEFAULT_IFNAME" [ -z "$BUILD_SCM_URL" ] && BUILD_SCM_URL="$DEFAULT_BUILD_SCM_URL" - [ -z "$BUILD_BRANCH" ] && BUILD_BRANCH="$DEFAULT_BUILD_BRANCH" [ -z "$TESTCONFIG" ] && TESTCONFIG="$DEFAULT_TESTCONFIG" [ -z "$TESTMASTER" ] && TESTMASTER="$DEFAULT_TESTMASTER" [ -n "$DRY_RUN" ] && MAILTO="" + + # elaborate the extra args to be passed to run_log + for config in ${TESTCONFIG} ; do + RUN_LOG_EXTRAS="$RUN_LOG_EXTRAS --config $config" + done + if [ -n "$OVERBASE" ] ; then sedargs="-e s,@DATE@,${DATE},g" @@ -535,17 +538,19 @@ function main () { ### elaborate mail subject if [ -n "$DO_BUILD" -a -n "$DO_TEST" ] ; then - MAIL_SUBJECT="complete" + MAIL_SUBJECT="full" elif [ -n "$DO_BUILD" ] ; then - MAIL_SUBJECT="package-only" + MAIL_SUBJECT="pkg-only" elif [ -n "$DO_TEST" ] ; then MAIL_SUBJECT="test-only" fi if [ -n "$OVERBASE" ] ; then - MAIL_SUBJECT="$MAIL_SUBJECT incremental run on" + MAIL_SUBJECT="${MAIL_SUBJECT} rerun" else - MAIL_SUBJECT="$MAIL_SUBJECT fresh build" + MAIL_SUBJECT="${MAIL_SUBJECT} fresh" fi + short_hostname=$(hostname | cut -d. -f1) + MAIL_SUBJECT="on ${short_hostname} - ${MAIL_SUBJECT}" ### compute WEBHOST from TESTBUILDURL # this is to avoid having to change the builds configs everywhere @@ -645,13 +650,9 @@ function main () { # Extract build again - in the vserver [ -n "$SSH_KEY" ] && setupssh ${BASE} ${SSH_KEY} if echo $BUILD_SCM_URL | grep -q git ; then - vserver $BASE exec bash -c "git clone --branch $BUILD_BRANCH $GIT_REPO /build; cd /build; git checkout $GIT_TAG" + vserver $BASE exec bash -c "git clone $GIT_REPO /build; cd /build; git checkout $GIT_TAG" else - if [ "x$BUILD_BRANCH" != "x$DEFAULT_BUILD_BRANCH" ]; then - vserver $BASE exec svn checkout ${BUILD_SCM_URL} /build - else - vserver $BASE exec svn checkout ${BUILD_SCM_URL}/branches/$BUILD_BRANCH /build - fi + vserver $BASE exec svn checkout ${BUILD_SCM_URL} /build fi fi # install ssh key in vserver