tools: Add support for caching Kernel artefacts

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 <fabiano.fidencio@intel.com>
Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
This commit is contained in:
Fabiano Fidêncio 2023-03-16 12:43:21 +01:00
parent 762f9f4c3e
commit cb4cbe2958
4 changed files with 27 additions and 3 deletions

View File

@ -1 +1 @@
101
102

View File

@ -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)"
}

View File

@ -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

View File

@ -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}" && \