From 8a40f6f23498bcfec6c0a2ebd4f7a1e47f2e1023 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= Date: Thu, 16 Mar 2023 13:32:38 +0100 Subject: [PATCH] local-build: Use cached Cloud Hypervisor when possible MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As we've added the support for caching components, let's use them whenever those are available. Fixes: #6480 Signed-off-by: Fabiano FidĂȘncio Signed-off-by: Gabriela Cervantes --- .../local-build/dockerbuild/Dockerfile | 1 + .../local-build/kata-deploy-binaries.sh | 54 +++++++++++++++++-- 2 files changed, 50 insertions(+), 5 deletions(-) diff --git a/tools/packaging/kata-deploy/local-build/dockerbuild/Dockerfile b/tools/packaging/kata-deploy/local-build/dockerbuild/Dockerfile index 2ff5f5ae83..1338f482a2 100644 --- a/tools/packaging/kata-deploy/local-build/dockerbuild/Dockerfile +++ b/tools/packaging/kata-deploy/local-build/dockerbuild/Dockerfile @@ -43,6 +43,7 @@ RUN apt-get update && \ git \ make \ unzip \ + wget \ xz-utils && \ apt-get clean && rm -rf /var/lib/apt/lists diff --git a/tools/packaging/kata-deploy/local-build/kata-deploy-binaries.sh b/tools/packaging/kata-deploy/local-build/kata-deploy-binaries.sh index 79cf5a1411..8b4361097e 100755 --- a/tools/packaging/kata-deploy/local-build/kata-deploy-binaries.sh +++ b/tools/packaging/kata-deploy/local-build/kata-deploy-binaries.sh @@ -32,6 +32,9 @@ readonly nydus_builder="${static_build_dir}/nydus/build.sh" readonly rootfs_builder="${repo_root_dir}/tools/packaging/guest-image/build_image.sh" +readonly jenkins_url="http://jenkins.katacontainers.io" +readonly cached_artifacts_path="lastSuccessfulBuild/artifact/artifacts" + ARCH=$(uname -m) workdir="${WORKDIR:-$PWD}" @@ -87,6 +90,34 @@ EOF exit "${return_code}" } + +cleanup_and_fail() { + rm -f "${component_tarball_path}" + return 1 +} + +install_cached_tarball_component() { + local component="${1}" + local jenkins_build_url="${2}" + local current_version="${3}" + local current_image_version="${4}" + local component_tarball_name="${5}" + local component_tarball_path="${6}" + + local cached_version=$(curl -sfL "${jenkins_build_url}/latest" | awk '{print $1}') || cached_version="none" + local cached_image_version=$(curl -sfL "${jenkins_build_url}/latest_image" | awk '{print $1}') || cached_image_version="none" + + [ "${cached_image_version}" != "${current_image_version}" ] && return 1 + [ "${cached_version}" != "${current_version}" ] && return 1 + + info "Using cached tarball of ${component}" + echo "Downloading tarball from: ${jenkins_build_url}/${component_tarball_name}" + wget "${jenkins_build_url}/${component_tarball_name}" || return cleanup_and_fail + wget "${jenkins_build_url}/sha256sum-${component_tarball_name}" || return cleanup_and_fail + sha256sum -c "sha256sum-${component_tarball_name}" || return cleanup_and_fail + mv "${component_tarball_name}" "${component_tarball_path}" +} + #Install guest image install_image() { info "Create image" @@ -142,6 +173,15 @@ install_firecracker() { # Install static cloud-hypervisor asset install_clh() { + install_cached_tarball_component \ + "cloud-hypervisor" \ + "${jenkins_url}/job/kata-containers-main-clh-$(uname -m)/${cached_artifacts_path}" \ + "$(get_from_kata_deps "assets.hypervisor.cloud_hypervisor.version")" \ + "" \ + "${final_tarball_name}" \ + "${final_tarball_path}" \ + && return 0 + if [[ "${ARCH}" == "x86_64" ]]; then export features="tdx" fi @@ -192,6 +232,11 @@ handle_build() { info "DESTDIR ${destdir}" local build_target build_target="$1" + + export final_tarball_path="${workdir}/kata-static-${build_target}.tar.xz" + export final_tarball_name="$(basename ${final_tarball_path})" + rm -f ${final_tarball_name} + case "${build_target}" in all) install_clh @@ -232,12 +277,11 @@ handle_build() { ;; esac - tarball_name="${workdir}/kata-static-${build_target}.tar.xz" - ( + if [ ! -f "${final_tarball_path}" ]; then cd "${destdir}" - sudo tar cvfJ "${tarball_name}" "." - ) - tar tvf "${tarball_name}" + sudo tar cvfJ "${final_tarball_path}" "." + fi + tar tvf "${final_tarball_path}" } silent_mode_error_trap() {