[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v7 20/20] osstest: save/retrieve the last successfully tested FreeBSD build
And use it in order to install the hosts for the next FreeBSD flight. Note that the anoints are done after the push, but there's a recovery mechanism in case osstest manages to do a successful push, but the artifacts are not anointed for some reason. Osstest will continue to create flights until the revision of the anointed artifacts matches the one pushed to the repository (even if that means running flights with OLD_REVISION == NEW_REVISION). Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> --- Changes since v6: - Use just the branch name for anoint (instead of freebsd-$branch). - Force the creation of flights if the revision of the current anoints don't match OLD_VERSION. - Iterate over the list of current anoints instead of open-coding the arches. - Split the retrieve/anoint code blocks into it's own sections. Changes since v5: - New in this version. --- cr-daily-branch | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/cr-daily-branch b/cr-daily-branch index af17ad20..d74f9c33 100755 --- a/cr-daily-branch +++ b/cr-daily-branch @@ -126,6 +126,34 @@ elif [ "x$OSSTEST_NO_BASELINE" != xy ] ; then fi fi +# For convenience set a global variable with the FreeBSD branch +# under test, so that we don't need to repeat this in several +# places +case "$branch" in +freebsd-*) freebsd_branch=${branch#freebsd-} ;; +*) freebsd_branch=master ;; +esac + +case "$branch" in +freebsd-*) + IFS=$'\n' + for anointed in \ + `./mg-anoint list-prepared "freebsd build $freebsd_branch*"`; do + # Check if the anointed version matches OLD_VERSION, + # or else force a new flight, even if OLD_REVISION matches + # NEW_REVISION. + flight_job=`./mg-anoint retrieve "$anointed"` + anointed_revision=`check_tested --flight=${flight_job%% *} \ + --print-revision=$tree` + if [ "x$anointed_revision" != "x$OLD_REVISION" ]; then + skipidentical=false + break + fi + done + unset IFS + ;; +esac + if [ "x$REVISION_XEN" = x ]; then REVISION_XEN="`fetch_version $xenbranch`" export REVISION_XEN @@ -277,6 +305,19 @@ freebsd) ;; esac +IFS=$'\n' +for anointed in \ + `./mg-anoint list-prepared "freebsd build $freebsd_branch*"`; do + # Retrieve previous successful FreeBSD build for each arch. + freebsd_arch=${anointed##* } + freebsd_envvar="FREEBSD_${freebsd_arch^^}_BUILDJOB" + if [ "x${!freebsd_envvar}" = "x" ]; then + flight_job=`./mg-anoint retrieve "$anointed"` + export ${freebsd_envvar}=${flight_job/ /.} + fi +done +unset IFS + if [ "x$OLD_REVISION" = xdetermine-late ]; then OLD_REVISION="`\ $AP_FETCH_PFX ./ap-fetch-version-baseline-late $branch $NEW_REVISION`" @@ -476,6 +517,33 @@ else echo fi +# Do the anoints after the push: if for some reason this fails, +# and osstest ends up with a pushed revision that doesn't match +# the latest anointed artifact a new flight will be run regardless +# of whether OLD_REVISION == NEW_REVISION. +case "$branch" in +freebsd-*) + if grep '^tolerable$' $mrof >/dev/null 2>&1 && $OSSTEST_ANOINT && + [ "x$OSSTEST_BLESSING" == "xreal" ]; then + IFS=$'\n' + for anointed in `./mg-anoint list-prepared \ + "freebsd build $freebsd_branch*"`; do + # Update anointed versions + # NB: failure to update an anointed build for a specific arch + # should not be fatal, and it's not an issue if one of the + # arches gets slightly out of sync with the other ones. + freebsd_arch=${anointed##* } + if ./mg-anoint anoint \ + "freebsd build $freebsd_branch $freebsd_arch" \ + $flight build-$freebsd_arch-freebsd; then + echo "Anointed artifacts from build-$freebsd_arch-freebsd" + fi + done + unset IFS + fi + ;; +esac + if [ -f $revlog ]; then revlog_lines=`wc -l <$revlog` if [ $revlog_lines -lt 300 ]; then -- 2.11.0 (Apple Git-81) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |