ci: cache: Use the cached artefacts from ORAS

In the previous series related to the artefacts we build, we've
switching from storing the artefacts on Jenkins, to storing those in the
ghcr.io/kata-containers/cached-artefacts/${artefact_name}.

Now, let's take advantage of that and actually use the artefacts coming
from that "package" (as GitHub calls it).

NOTE: One thing that I've noticed that we're missing, is storing and
checking the sha256sum of the artefact.  The storing part will be done
in a different commit, and the checking the sha256sum will be done in a
different PR, as we need to ensure those were pushed to the registry
before actually taking the bullet to check for them.

Fixes: #7834 -- part 2

Signed-off-by: Fabiano Fidêncio <fabiano.fidencio@intel.com>
This commit is contained in:
Fabiano Fidêncio 2023-09-15 10:13:47 +02:00
parent 6f30d00ae7
commit eccc76df63

View File

@ -35,16 +35,13 @@ 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=${ARCH:-$(uname -m)}
MEASURED_ROOTFS=${MEASURED_ROOTFS:-no}
USE_CACHE="${USE_CACHE:-"yes"}"
ARTEFACT_REGISTRY="${ARTEFACT_REGISTRY:-}"
ARTEFACT_REGISTRY="${ARTEFACT_REGISTRY:-ghcr.io}"
ARTEFACT_REGISTRY_USERNAME="${ARTEFACT_REGISTRY_USERNAME:-}"
ARTEFACT_REGISTRY_PASSWORD="${ARTEFACT_REGISTRY_PASSWORD:-}"
TARGET_BRANCH="${TARGET_BRANCH:=}"
TARGET_BRANCH="${TARGET_BRANCH:-main}"
PUSH_TO_REGISTRY="${PUSH_TO_REGISTRY:-}"
workdir="${WORKDIR:-$PWD}"
@ -114,35 +111,29 @@ EOF
exit "${return_code}"
}
cleanup_and_fail() {
rm -f "${component_tarball_path}"
return 1
}
install_cached_tarball_component() {
if [ "${USE_CACHE}" != "yes" ]; then
return 1
fi
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 current_version="${2}"
local current_image_version="${3}"
local component_tarball_name="${4}"
local component_tarball_path="${5}"
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"
oras pull ${ARTEFACT_REGISTRY}/kata-containers/cached-artefacts/${build_target}:latest-${TARGET_BRANCH}-$(uname -m)
cached_version="$(cat ${component}-version)"
cached_image_version="$(cat ${component}-builder-image-version)"
rm -f ${component}-version
rm -f ${component}-builder-image-version
[ "${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}"
}
@ -155,7 +146,6 @@ install_image() {
image_type+="-${variant}"
fi
local jenkins="${jenkins_url}/job/kata-containers-main-rootfs-${image_type}-${ARCH}/${cached_artifacts_path}"
local component="rootfs-${image_type}"
local osbuilder_last_commit="$(get_last_modification "${repo_root_dir}/tools/osbuilder")"
@ -171,7 +161,6 @@ install_image() {
install_cached_tarball_component \
"${component}" \
"${jenkins}" \
"${latest_artefact}" \
"${latest_builder_image}" \
"${final_tarball_name}" \
@ -206,7 +195,6 @@ install_initrd() {
initrd_type+="-${variant}"
fi
local jenkins="${jenkins_url}/job/kata-containers-main-rootfs-${initrd_type}-${ARCH}/${cached_artifacts_path}"
local component="rootfs-${initrd_type}"
local osbuilder_last_commit="$(get_last_modification "${repo_root_dir}/tools/osbuilder")"
@ -224,7 +212,6 @@ install_initrd() {
install_cached_tarball_component \
"${component}" \
"${jenkins}" \
"${latest_artefact}" \
"${latest_builder_image}" \
"${final_tarball_name}" \
@ -266,7 +253,6 @@ install_cached_kernel_tarball_component() {
install_cached_tarball_component \
"${kernel_name}" \
"${jenkins_url}/job/kata-containers-main-${kernel_name}-${ARCH}/${cached_artifacts_path}" \
"${latest_artefact}" \
"${latest_builder_image}" \
"${final_tarball_name}" \
@ -280,7 +266,6 @@ install_cached_kernel_tarball_component() {
# SEV specific code path
install_cached_tarball_component \
"${kernel_name}" \
"${jenkins_url}/job/kata-containers-main-${kernel_name}-$(uname -m)/${cached_artifacts_path}" \
"${latest_artefact}" \
"${latest_builder_image}" \
"kata-static-kernel-sev-modules.tar.xz" \
@ -406,7 +391,6 @@ install_qemu_helper() {
install_cached_tarball_component \
"${qemu_name}" \
"${jenkins_url}/job/kata-containers-main-${qemu_name}-${ARCH}/${cached_artifacts_path}" \
"${latest_artefact}" \
"${latest_builder_image}" \
"${final_tarball_name}" \
@ -458,7 +442,6 @@ install_firecracker() {
install_cached_tarball_component \
"firecracker" \
"${jenkins_url}/job/kata-containers-main-firecracker-$(uname -m)/${cached_artifacts_path}" \
"${latest_artefact}" \
"${latest_builder_image}" \
"${final_tarball_name}" \
@ -483,7 +466,6 @@ install_clh_helper() {
install_cached_tarball_component \
"cloud-hypervisor${suffix}" \
"${jenkins_url}/job/kata-containers-main-clh-$(uname -m)${suffix}/${cached_artifacts_path}" \
"${latest_artefact}" \
"${latest_builder_image}" \
"${final_tarball_name}" \
@ -526,7 +508,6 @@ install_virtiofsd() {
install_cached_tarball_component \
"virtiofsd" \
"${jenkins_url}/job/kata-containers-main-virtiofsd-${ARCH}/${cached_artifacts_path}" \
"${latest_artefact}" \
"${latest_builder_image}" \
"${final_tarball_name}" \
@ -549,7 +530,6 @@ install_nydus() {
install_cached_tarball_component \
"nydus" \
"${jenkins_url}/job/kata-containers-main-nydus-$(uname -m)/${cached_artifacts_path}" \
"${latest_artefact}" \
"${latest_builder_image}" \
"${final_tarball_name}" \
@ -578,7 +558,6 @@ install_shimv2() {
install_cached_tarball_component \
"shim-v2" \
"${jenkins_url}/job/kata-containers-main-shim-v2-${ARCH}/${cached_artifacts_path}" \
"${latest_artefact}" \
"${latest_builder_image}" \
"${final_tarball_name}" \
@ -614,7 +593,6 @@ install_ovmf() {
install_cached_tarball_component \
"${component_name}" \
"${jenkins_url}/job/kata-containers-main-ovmf-${ovmf_type}-$(uname -m)/${cached_artifacts_path}" \
"${latest_artefact}" \
"${latest_builder_image}" \
"${final_tarball_name}" \