mirror of
https://github.com/aljazceru/kata-containers.git
synced 2026-02-20 22:14:45 +01:00
CCv0: Use cached kernel
This PR enables the use for the cached kernel. Fixes #5355 Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com>
This commit is contained in:
@@ -39,6 +39,16 @@ cache_clh_artifacts() {
|
||||
echo "${current_cloud_hypervisor_version}" > "latest"
|
||||
}
|
||||
|
||||
cache_kernel_artifacts() {
|
||||
local current_kernel_version=$(get_from_kata_deps "assets.kernel.version")
|
||||
source "${script_dir}/kernel/build.sh"
|
||||
local kernel_tarball_name="linux-${cached_kernel_version}.tar.xz"
|
||||
local gral_path="$(echo $script_dir | sed 's,/*[^/]\+/*$,,' | sed 's,/*[^/]\+/*$,,' | sed 's,/*[^/]\+/*$,,')"
|
||||
local kernel_config_file="${gral_path}/tools/packaging/kernel/kata_config_version"
|
||||
local kernel_config="$(cat $kernel_config_file)"
|
||||
echo "${current_kernel_version} ${kernel_config_file}" > "latest"
|
||||
}
|
||||
|
||||
create_cache_asset() {
|
||||
local component_name="$1"
|
||||
local component_version="$2"
|
||||
@@ -63,6 +73,7 @@ Usage: $0 "[options]"
|
||||
Builds the cache of several kata components.
|
||||
Options:
|
||||
-c Cloud hypervisor cache
|
||||
-k Kernel cache
|
||||
-q Qemu cache
|
||||
-h Shows help
|
||||
EOF
|
||||
@@ -72,13 +83,17 @@ EOF
|
||||
main() {
|
||||
local cloud_hypervisor_component="${cloud_hypervisor_component:-}"
|
||||
local qemu_component="${qemu_component:-}"
|
||||
local kernel_component="${kernel_component:-}"
|
||||
local OPTIND
|
||||
while getopts ":cqh:" opt
|
||||
while getopts ":ckqh:" opt
|
||||
do
|
||||
case "$opt" in
|
||||
c)
|
||||
cloud_hypervisor_component="1"
|
||||
;;
|
||||
k)
|
||||
kernel_component="1"
|
||||
;;
|
||||
q)
|
||||
qemu_component="1"
|
||||
;;
|
||||
@@ -96,6 +111,7 @@ main() {
|
||||
shift $((OPTIND-1))
|
||||
|
||||
[[ -z "${cloud_hypervisor_component}" ]] && \
|
||||
[[ -z "${kernel_component}" ]] && \
|
||||
[[ -z "${qemu_component}" ]] && \
|
||||
help && die "Must choose at least one option"
|
||||
|
||||
@@ -104,6 +120,7 @@ main() {
|
||||
echo "Artifacts:"
|
||||
|
||||
[ "${cloud_hypervisor_component}" == "1" ] && cache_clh_artifacts
|
||||
[ "${kernel_component}" == "1" ] && cache_kernel_artifacts
|
||||
[ "${qemu_component}" == "1" ] && cache_qemu_artifacts
|
||||
|
||||
ls -la "${WORKSPACE}/artifacts/"
|
||||
|
||||
@@ -17,25 +17,67 @@ source "${script_dir}/../../scripts/lib.sh"
|
||||
DESTDIR=${DESTDIR:-${PWD}}
|
||||
PREFIX=${PREFIX:-/opt/kata}
|
||||
container_image="${KERNEL_CONTAINER_BUILDER:-${CC_BUILDER_REGISTRY}:kernel-$(get_last_modification ${repo_root_dir} ${script_dir})-$(uname -m)}"
|
||||
kernel_latest_build_url="${jenkins_url}/job/kata-containers-2.0-kernel-cc-$(uname -m)/${cached_artifacts_path}"
|
||||
current_kernel_version=${kernel_version:-$(get_from_kata_deps "assets.kernel.version")}
|
||||
cached_path="$(echo ${script_dir} | sed 's,/*[^/]\+/*$,,' | sed 's,/*[^/]\+/*$,,' | sed 's,/*[^/]\+/*$,,' | sed 's,/*[^/]\+/*$,,')"
|
||||
|
||||
sudo docker pull ${container_image} || \
|
||||
(sudo docker build -t "${container_image}" "${script_dir}" && \
|
||||
# No-op unless PUSH_TO_REGISTRY is exported as "yes"
|
||||
push_to_registry "${container_image}")
|
||||
build_from_source() {
|
||||
sudo docker pull ${container_image} || \
|
||||
(sudo docker build -t "${container_image}" "${script_dir}" && \
|
||||
# No-op unless PUSH_TO_REGISTRY is exported as "yes"
|
||||
push_to_registry "${container_image}")
|
||||
|
||||
sudo docker run --rm -i -v "${repo_root_dir}:${repo_root_dir}" \
|
||||
-w "${PWD}" \
|
||||
--env KATA_BUILD_CC="${KATA_BUILD_CC:-}" \
|
||||
"${container_image}" \
|
||||
bash -c "${kernel_builder} $* setup"
|
||||
sudo docker run --rm -i -v "${repo_root_dir}:${repo_root_dir}" \
|
||||
-w "${PWD}" \
|
||||
--env KATA_BUILD_CC="${KATA_BUILD_CC:-}" \
|
||||
"${container_image}" \
|
||||
bash -c "${kernel_builder} $* setup"
|
||||
|
||||
sudo docker run --rm -i -v "${repo_root_dir}:${repo_root_dir}" \
|
||||
-w "${PWD}" \
|
||||
"${container_image}" \
|
||||
bash -c "${kernel_builder} $* build"
|
||||
sudo docker run --rm -i -v "${repo_root_dir}:${repo_root_dir}" \
|
||||
-w "${PWD}" \
|
||||
"${container_image}" \
|
||||
bash -c "${kernel_builder} $* build"
|
||||
|
||||
sudo docker run --rm -i -v "${repo_root_dir}:${repo_root_dir}" \
|
||||
-w "${PWD}" \
|
||||
--env DESTDIR="${DESTDIR}" --env PREFIX="${PREFIX}" \
|
||||
"${container_image}" \
|
||||
bash -c "${kernel_builder} $* install"
|
||||
sudo docker run --rm -i -v "${repo_root_dir}:${repo_root_dir}" \
|
||||
-w "${PWD}" \
|
||||
--env DESTDIR="${DESTDIR}" --env PREFIX="${PREFIX}" \
|
||||
"${container_image}" \
|
||||
bash -c "${kernel_builder} $* install"
|
||||
}
|
||||
|
||||
check_cached_kernel() {
|
||||
local latest=$(curl -sfL "${kernel_latest_build_url}"/latest) || latest="none"
|
||||
local cached_kernel_version="$(echo ${latest} | awk '{print $1}')"
|
||||
info "Current kernel version: ${current_kernel_version}"
|
||||
info "Cached kernel version: ${cached_kernel_version}"
|
||||
if [ "${current_kernel_version}" == "${cached_kernel_version}" ] && [ "${ARCH}" == "x86_64" ]; then
|
||||
local cached_kernel_config="$(echo ${latest} | awk '{print $2}')"
|
||||
info "Cached kernel config: ${cached_kernel_config}"
|
||||
local current_kernel_config_file="${cached_path}/tools/packaging/kernel/kata_config_version"
|
||||
local current_kernel_config="$(cat $current_kernel_config_file)"
|
||||
info "Current kernel config: ${current_kernel_config}"
|
||||
if [ -z "${cached_kernel_config}" ]; then
|
||||
build_from_source
|
||||
else
|
||||
install_cached_kernel
|
||||
fi
|
||||
else
|
||||
build_from_source
|
||||
fi
|
||||
}
|
||||
|
||||
install_cached_kernel() {
|
||||
local kernel_directory="${cached_path}/tools/packaging/kata-deploy/local-build/build/cc-kernel/builddir"
|
||||
local kernel_tarball_name="linux-${cached_kernel_version}.tar.xz"
|
||||
mkdir -p "${kernel_directory}"
|
||||
pushd "${kernel_directory}"
|
||||
curl -fL --progress-bar "${kernel_latest_build_url}/${kernel_tarball_name}" -o "${kernel_tarball_name}" || return 1
|
||||
popd
|
||||
|
||||
}
|
||||
|
||||
main() {
|
||||
check_cached_kernel
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
Reference in New Issue
Block a user