From a9c3a31efb817d0c4d1c468f718c5bc57df62534 Mon Sep 17 00:00:00 2001 From: Kai Lueke Date: Wed, 23 Feb 2022 15:45:40 +0100 Subject: [PATCH] ci-automation: add missing update test The kola update test was missing. It is performed as update from the old image to the newly built payload to ensure that the new image is compatible for old clients. --- ci-automation/vendor-testing/qemu_update.sh | 80 +++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100755 ci-automation/vendor-testing/qemu_update.sh diff --git a/ci-automation/vendor-testing/qemu_update.sh b/ci-automation/vendor-testing/qemu_update.sh new file mode 100755 index 0000000000..e9ddfacf14 --- /dev/null +++ b/ci-automation/vendor-testing/qemu_update.sh @@ -0,0 +1,80 @@ +#!/bin/bash +# Copyright (c) 2021 The Flatcar Maintainers. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +set -euo pipefail + +# Test execution script for the update payload using the previous +# release as starting point, and doing a second update from the current +# build to itself again. +# This script is supposed to run in the SDK container. + +work_dir="$1"; shift +arch="$1"; shift +vernum="$1"; shift +tapfile="$1"; shift + +# $@ now contains tests / test patterns to run + +if [ "$@" != "" ] && [ "$@" != "*" ] && [ "$@" != "cl.update.payload" ]; then + echo "Only cl.update.payload is supported, got '$@'" + exit 1 +fi + +source ci-automation/ci_automation_common.sh + +mkdir -p "${work_dir}" +cd "${work_dir}" + +mkdir -p tmp/ +if [ -f tmp/flatcar_test_update.gz ] ; then + echo "++++ QEMU test: Using existing ${work_dir}/tmp/flatcar_test_update.gz for testing ${vernum} (${arch}) ++++" +else + echo "++++ QEMU test: downloading flatcar_test_update.gz for ${vernum} (${arch}) ++++" + copy_from_buildcache "images/${arch}/${vernum}/flatcar_test_update.gz" tmp/ +fi + +# Get last release tag (and filter out the alpha-3046.0.0 tag which was done without updating the submodule and thus refers a commit on main) +PREV_TAG=$(git describe --tags --abbrev=0 | sed 's/alpha-3046.0.0//g') +if [ "${PREV_TAG}" = "" ]; then + # For main we compare to last alpha release + ON_CHANNEL="alpha" +else + ON_CHANNEL=$(echo "${PREV_TAG}" | cut -d "-" -f 1) +fi +if [ "${ON_CHANNEL}" = "lts" ]; then + echo "Updating from previous LTS is not supported yet (needs creds), fallback to Stable" + ON_CHANNEL="stable" +fi +if [ -f tmp/flatcar_production_image_previous.bin ] ; then + echo "++++ QEMU test: Using existing ${work_dir}/tmp/flatcar_production_image_previous.bin for testing update to ${vernum} (${arch}) from previous ${ON_CHANNEL} ++++" +else + echo "++++ QEMU test: downloading flatcar_production_image_previous.bin from previous ${ON_CHANNEL} ++++" + rm -f tmp/flatcar_production_image_previous.bin.bz2 + curl -fsSLO --retry-delay 1 --retry 60 --retry-connrefused --retry-max-time 60 --connect-timeout 20 "https://${ON_CHANNEL}.release.flatcar-linux.net/${arch}-usr/current/flatcar_production_image.bin.bz2" + mv flatcar_production_image.bin.bz2 tmp/flatcar_production_image_previous.bin.bz2 + lbunzip2 -k -f tmp/flatcar_production_image_previous.bin.bz2 +fi + +bios="${QEMU_BIOS}" +if [ "${arch}" = "arm64" ]; then + bios="${QEMU_UEFI_BIOS}" + if [ -f "${bios}" ] ; then + echo "++++ ${testscript}: Using existing ${work_dir}/${bios} ++++" + else + echo "++++ ${testscript}: downloading ${bios} for ${vernum} (${arch}) ++++" + copy_from_buildcache "images/${arch}/${vernum}/${bios}" . + fi +fi + +sudo kola run \ + --board="${arch}-usr" \ + --parallel="${QEMU_PARALLEL}" \ + --platform=qemu \ + --qemu-bios="${bios}" \ + --qemu-image=tmp/flatcar_production_image_previous.bin \ + --tapfile="${tapfile}" \ + --torcx-manifest=../torcx_manifest.json \ + --update-payload=tmp/flatcar_test_update.gz \ + cl.update.payload