From cb4cbe29580f9e44b7f70ca9f5c7ceadb448dc4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= Date: Thu, 16 Mar 2023 12:43:21 +0100 Subject: [PATCH] tools: Add support for caching Kernel artefacts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Let's add support for caching Kernel artefacts that are generated using the kata-deploy local-build scripts. Right now those are not used, but we'll switch to using them very soon as part of upcoming changes of how we build the components we test in our CI. Fixes: #6480 Signed-off-by: Fabiano FidĂȘncio Signed-off-by: Gabriela Cervantes --- tools/packaging/kernel/kata_config_version | 2 +- tools/packaging/scripts/lib.sh | 5 +++++ .../static-build/cache_components_main.sh | 21 ++++++++++++++++++- tools/packaging/static-build/kernel/build.sh | 2 +- 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/tools/packaging/kernel/kata_config_version b/tools/packaging/kernel/kata_config_version index 398050c62c..257e563266 100644 --- a/tools/packaging/kernel/kata_config_version +++ b/tools/packaging/kernel/kata_config_version @@ -1 +1 @@ -101 +102 diff --git a/tools/packaging/scripts/lib.sh b/tools/packaging/scripts/lib.sh index 10c5351727..deece4ede9 100644 --- a/tools/packaging/scripts/lib.sh +++ b/tools/packaging/scripts/lib.sh @@ -129,3 +129,8 @@ push_to_registry() { fi fi } + +get_kernel_image_name() { + kernel_script_dir="${repo_root_dir}/tools/packaging/static-build/kernel" + echo "${BUILDER_REGISTRY}:kernel-$(get_last_modification ${kernel_script_dir})-$(uname -m)" +} diff --git a/tools/packaging/static-build/cache_components_main.sh b/tools/packaging/static-build/cache_components_main.sh index 4ba3d16e09..3f620887c6 100755 --- a/tools/packaging/static-build/cache_components_main.sh +++ b/tools/packaging/static-build/cache_components_main.sh @@ -12,6 +12,8 @@ script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "${script_dir}/../scripts/lib.sh" +KERNEL_FLAVOUR="${KERNEL_FLAVOUR:-kernel}" # kernel | kernel-experimental | kernel-arm-experimetnal | kernel-dragonball-experimental + cache_clh_artifacts() { local clh_tarball_name="kata-static-cloud-hypervisor.tar.xz" local current_clh_version="$(get_from_kata_deps "assets.hypervisor.cloud_hypervisor.version")" @@ -24,6 +26,14 @@ cache_firecracker_artifacts() { create_cache_asset "${fc_tarball_name}" "${current_fc_version}" "" } +cache_kernel_artifacts() { + local kernel_tarball_name="kata-static-${KERNEL_FLAVOUR}.tar.xz" + local current_kernel_image="$(get_kernel_image_name)" + local current_kernel_kata_config_version="$(cat ${repo_root_dir}/tools/packaging/kernel/kata_config_version)" + local current_kernel_version="$(get_from_kata_deps "assets.${KERNEL_FLAVOUR}.version")-${current_kernel_kata_config_version}" + create_cache_asset "${kernel_tarball_name}" "${current_kernel_version}" "${current_kernel_image}" +} + create_cache_asset() { local component_name="${1}" local component_version="${2}" @@ -47,6 +57,9 @@ Usage: $0 "[options]" Options: -c Cloud hypervisor cache -F Firecracker cache + -k Kernel cache + * Export KERNEL_FLAVOUR="kernel|kernek-experimental|kernel-arm-experimental|kernel-dragonball-experimental" for a specific build + The default KERNEL_FLAVOUR value is "kernel" -h Shows help EOF )" @@ -55,8 +68,9 @@ EOF main() { local cloud_hypervisor_component="${cloud_hypervisor_component:-}" local firecracker_component="${firecracker_component:-}" + local kernel_component="${kernel_component:-}" local OPTIND - while getopts ":cFh:" opt + while getopts ":cFkh:" opt do case "$opt" in c) @@ -65,6 +79,9 @@ main() { F) firecracker_component="1" ;; + k) + kernel_component="1" + ;; h) help exit 0; @@ -80,6 +97,7 @@ main() { [[ -z "${cloud_hypervisor_component}" ]] && \ [[ -z "${firecracker_component}" ]] && \ + [[ -z "${kernel_component}" ]] && \ help && die "Must choose at least one option" mkdir -p "${WORKSPACE}/artifacts" @@ -88,6 +106,7 @@ main() { [ "${cloud_hypervisor_component}" == "1" ] && cache_clh_artifacts [ "${firecracker_component}" == "1" ] && cache_firecracker_artifacts + [ "${kernel_component}" == "1" ] && cache_kernel_artifacts ls -la "${WORKSPACE}/artifacts/" popd diff --git a/tools/packaging/static-build/kernel/build.sh b/tools/packaging/static-build/kernel/build.sh index f85ba4ec11..d9f6ccd90e 100755 --- a/tools/packaging/static-build/kernel/build.sh +++ b/tools/packaging/static-build/kernel/build.sh @@ -16,7 +16,7 @@ readonly kernel_builder="${repo_root_dir}/tools/packaging/kernel/build-kernel.sh DESTDIR=${DESTDIR:-${PWD}} PREFIX=${PREFIX:-/opt/kata} -container_image="${KERNEL_CONTAINER_BUILDER:-${BUILDER_REGISTRY}:kernel-$(get_last_modification ${script_dir})-$(uname -m)}" +container_image="${KERNEL_CONTAINER_BUILDER:-$(get_kernel_image_name)}" sudo docker pull ${container_image} || \ (sudo docker build -t "${container_image}" "${script_dir}" && \