Merge pull request #5828 from fidencio/topic/cached-components-add-support-for-caching-firmwares

CC | Add support for caching firmwares
This commit is contained in:
Fabiano Fidêncio
2022-12-05 12:34:18 +01:00
committed by GitHub
3 changed files with 44 additions and 8 deletions

View File

@@ -41,6 +41,7 @@ RUN apt-get update && \
git \
make \
unzip \
wget \
xz-utils && \
apt-get clean && rm -rf /var/lib/apt/lists

View File

@@ -126,12 +126,11 @@ install_cached_component() {
[ "${cached_version}" != "${current_version}" ] && return 1
info "Using cached tarball of ${component}"
pushd ${workdir}
echo "Downloading tarball from: ${jenkins_build_url}/${component_tarball_name}"
curl -fL --progress-bar "${jenkins_build_url}/${component_tarball_name}" -o "${component_tarball_path}" || return cleanup_and_fail
curl -fsOL "${jenkins_build_url}/sha256sum-${component_tarball_name}" || return cleanup_and_fail
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
popd
mv "${component_tarball_name}" "${component_tarball_path}"
}
# Install static CC cloud-hypervisor asset
@@ -318,7 +317,7 @@ install_cc_tdx_td_shim() {
install_cached_component \
"td-shim" \
"${jenkins_url}/job/kata-containers-2.0-td-shim-cc-$(uname -m)/${cached_artifacts_path}" \
"$(get_from_kata_deps "assets.externals.td-shim.version")" \
"$(get_from_kata_deps "externals.td-shim.version")-$(get_from_kata_deps "externals.td-shim.toolchain")" \
"$(get_td_shim_image_name)" \
"${final_tarball_name}" \
"${final_tarball_path}" \
@@ -333,7 +332,7 @@ install_cc_tee_ovmf() {
tarball_name="${2}"
local component_name="ovmf"
local component_version="$(get_from_kata_deps "assets.external.ovmf.${tee}.version")"
local component_version="$(get_from_kata_deps "externals.ovmf.${tee}.version")"
[ "${tee}" == "tdx" ] && component_name="tdvf"
install_cached_component \
"${component_name}" \

View File

@@ -14,6 +14,7 @@ source "${script_dir}/../scripts/lib.sh"
export KATA_BUILD_CC="${KATA_BUILD_CC:-}"
export TEE="${TEE:-}"
export FIRMWARE="${FIRMWARE:-}"
cache_qemu_artifacts() {
local qemu_tarball_name="kata-static-cc-qemu.tar.xz"
@@ -22,7 +23,6 @@ cache_qemu_artifacts() {
qemu_tarball_name="kata-static-cc-${TEE}-qemu.tar.xz"
[ "${TEE}" == "tdx" ] && current_qemu_version=$(get_from_kata_deps "assets.hypervisor.qemu.tdx.tag")
fi
local qemu_script_dir="${repo_root_dir}/tools/packaging/static-build/qemu"
local qemu_sha=$(calc_qemu_files_sha256sum)
local current_qemu_image="$(get_qemu_image_name)"
@@ -47,6 +47,26 @@ cache_kernel_artifacts() {
create_cache_asset "${kernel_tarball_name}" "${current_kernel_version}" "${current_kernel_image}"
}
cache_firmware_artifacts() {
case ${FIRMWARE} in
"td-shim")
firmware_tarball_name="kata-static-cc-tdx-td-shim.tar.xz"
current_firmware_image="$(get_td_shim_image_name)"
current_firmware_version="$(get_from_kata_deps "externals.td-shim.version")-$(get_from_kata_deps "externals.td-shim.toolchain")"
;;
"tdvf")
firmware_tarball_name="kata-static-cc-tdx-tdvf.tar.xz"
current_firmware_image="$(get_ovmf_image_name)"
current_firmware_version="$(get_from_kata_deps "externals.ovmf.tdx.version")"
;;
*)
die "Not a valid firmware (td-shim, tdvf) wass set as the FIRMWARE environment variable."
;;
esac
create_cache_asset "${firmware_tarball_name}" "${current_firmware_version}" "${current_firmware_image}"
}
create_cache_asset() {
local component_name="${1}"
local component_version="${2}"
@@ -70,7 +90,17 @@ Usage: $0 "[options]"
Options:
-c Cloud hypervisor cache
-k Kernel cache
* Can receive a TEE environnment variable value, valid values are:
* tdx
If no TEE environment is passed, the kernel is built without TEE support.
-q Qemu cache
* Can receive a TEE environnment variable value, valid values are:
* tdx
If no TEE environment is passed, QEMU is built without TEE support.
-f Firmware cache
* Requires FIRMWARE environment variable set, valid values are:
* tdvf
* td-shim
-h Shows help
EOF
)"
@@ -80,8 +110,9 @@ main() {
local cloud_hypervisor_component="${cloud_hypervisor_component:-}"
local qemu_component="${qemu_component:-}"
local kernel_component="${kernel_component:-}"
local firmware_component="${firmware_component:-}"
local OPTIND
while getopts ":ckqh:" opt
while getopts ":ckqfh:" opt
do
case "$opt" in
c)
@@ -93,6 +124,9 @@ main() {
q)
qemu_component="1"
;;
f)
firmware_component="1"
;;
h)
help
exit 0;
@@ -109,6 +143,7 @@ main() {
[[ -z "${cloud_hypervisor_component}" ]] && \
[[ -z "${kernel_component}" ]] && \
[[ -z "${qemu_component}" ]] && \
[[ -z "${firmware_component}" ]] && \
help && die "Must choose at least one option"
mkdir -p "${WORKSPACE}/artifacts"
@@ -118,6 +153,7 @@ main() {
[ "${cloud_hypervisor_component}" == "1" ] && cache_clh_artifacts
[ "${kernel_component}" == "1" ] && cache_kernel_artifacts
[ "${qemu_component}" == "1" ] && cache_qemu_artifacts
[ "${firmware_component}" == "1" ] && cache_firmware_artifacts
ls -la "${WORKSPACE}/artifacts/"
popd