From 9377c5d5cab7fff7e79fa6c92a749d2eab4084b0 Mon Sep 17 00:00:00 2001 From: Archana Shinde Date: Mon, 25 Nov 2019 15:14:22 -0800 Subject: [PATCH 1/2] release: Fix bug in how version is determined for actions Althought, we changed the script "gen_versions_txt.sh" to accept a tag rather than a branch, this change is not sufficient. This script generates the right version file based on a tag, but function `get_from_kata_deps` does not use this, and ends up using the master branch instead. This is because this function looks at an env variable called $BRANCH and ends up using master branch if the variable is not defined. Pass the tag/new version to the build scripts, so that this tag is passed along to `get_from_kata_dep`. With this change, the correct version information is consumed by the build scripts for the various hypervisors and kernel. Fixes #831 Signed-off-by: Archana Shinde --- kernel/build-kernel.sh | 5 +++-- kernel/kata_config_version | 2 +- release/kata-deploy-binaries.sh | 18 ++++++++++++------ .../cloud-hypervisor/build-static-clh.sh | 5 +++-- .../firecracker/build-static-firecracker.sh | 5 +++-- static-build/nemu/build-static-nemu.sh | 13 +++++++------ .../build-static-qemu-virtiofs.sh | 5 +++-- static-build/qemu/build-static-qemu.sh | 7 ++++--- 8 files changed, 36 insertions(+), 24 deletions(-) diff --git a/kernel/build-kernel.sh b/kernel/build-kernel.sh index dc5a955cf8..102e71c34c 100755 --- a/kernel/build-kernel.sh +++ b/kernel/build-kernel.sh @@ -14,6 +14,7 @@ set -o pipefail readonly script_name="$(basename "${BASH_SOURCE[0]}")" readonly script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +kata_version="${kata_version:-}" #project_name readonly project_name="kata-containers" @@ -427,9 +428,9 @@ main() { # If not kernel version take it from versions.yaml if [ -z "$kernel_version" ]; then if [[ ${experimental_kernel} == "true" ]]; then - kernel_version=$(get_from_kata_deps "assets.kernel-experimental.tag") + kernel_version=$(get_from_kata_deps "assets.kernel-experimental.tag" "${kata_version}") else - kernel_version=$(get_from_kata_deps "assets.kernel.version") + kernel_version=$(get_from_kata_deps "assets.kernel.version" "${kata_version}") #Remove extra 'v' kernel_version="${kernel_version#v}" fi diff --git a/kernel/kata_config_version b/kernel/kata_config_version index e1617e842a..8c61d23e12 100644 --- a/kernel/kata_config_version +++ b/kernel/kata_config_version @@ -1 +1 @@ -57 +58 diff --git a/release/kata-deploy-binaries.sh b/release/kata-deploy-binaries.sh index 43f84203e4..2c5f577005 100755 --- a/release/kata-deploy-binaries.sh +++ b/release/kata-deploy-binaries.sh @@ -116,12 +116,13 @@ install_image() { #Install kernel asset install_kernel() { + kata_version=${1:-$kata_version} pushd "${script_dir}/../" info "build kernel" ./kernel/build-kernel.sh setup ./kernel/build-kernel.sh build info "install kernel" - DESTDIR="${destdir}" PREFIX="${prefix}" ./kernel/build-kernel.sh install + kata_version="${kata_version}" DESTDIR="${destdir}" PREFIX="${prefix}" ./kernel/build-kernel.sh install popd pushd ${destdir} tar -czvf ../kata-static-kernel.tar.gz * @@ -130,12 +131,13 @@ install_kernel() { #Install experimental kernel asset install_experimental_kernel() { + kata_version=${1:-$kata_version} pushd "${script_dir}/../" info "build experimental kernel" ./kernel/build-kernel.sh -e setup ./kernel/build-kernel.sh -e build info "install experimental kernel" - DESTDIR="${destdir}" PREFIX="${prefix}" ./kernel/build-kernel.sh -e install + kata_version="${kata_version}" DESTDIR="${destdir}" PREFIX="${prefix}" ./kernel/build-kernel.sh -e install popd pushd ${destdir} tar -czvf ../kata-static-experimental-kernel.tar.gz * @@ -144,20 +146,23 @@ install_experimental_kernel() { # Install static qemu asset install_qemu() { + kata_version=${1:-$kata_version} info "build static qemu" - "${script_dir}/../static-build/qemu/build-static-qemu.sh" + kata_version="${kata_version}" "${script_dir}/../static-build/qemu/build-static-qemu.sh" } # Install static qemu-virtiofsd asset install_qemu_virtiofsd() { + kata_version=${1:-$kata_version} info "build static qemu-virtiofs" - "${script_dir}/../static-build/qemu-virtiofs/build-static-qemu-virtiofs.sh" + kata_version="${kata_version}" "${script_dir}/../static-build/qemu-virtiofs/build-static-qemu-virtiofs.sh" } # Install static firecracker asset install_firecracker() { + kata_version=${1:-$kata_version} info "build static firecracker" - [ -f "firecracker/firecracker-static" ] || "${script_dir}/../static-build/firecracker/build-static-firecracker.sh" + [ -f "firecracker/firecracker-static" ] || kata_version="${kata_version}" "${script_dir}/../static-build/firecracker/build-static-firecracker.sh" info "Install static firecracker" mkdir -p "${destdir}/opt/kata/bin/" sudo install -D --owner root --group root --mode 0744 firecracker/firecracker-static "${destdir}/opt/kata/bin/firecracker" @@ -169,8 +174,9 @@ install_firecracker() { # Install static cloud-hypervisor asset install_clh() { + kata_version=${1:-$kata_version} info "build static cloud-hypervisor" - "${script_dir}/../static-build/cloud-hypervisor/build-static-clh.sh" + kata_version="${kata_version}" "${script_dir}/../static-build/cloud-hypervisor/build-static-clh.sh" info "Install static cloud-hypervisor" mkdir -p "${destdir}/opt/kata/bin/" sudo install -D --owner root --group root --mode 0744 cloud-hypervisor/cloud-hypervisor "${destdir}/opt/kata/bin/cloud-hypervisor" diff --git a/static-build/cloud-hypervisor/build-static-clh.sh b/static-build/cloud-hypervisor/build-static-clh.sh index c205631fd3..b53cff406d 100755 --- a/static-build/cloud-hypervisor/build-static-clh.sh +++ b/static-build/cloud-hypervisor/build-static-clh.sh @@ -9,6 +9,7 @@ set -o nounset set -o pipefail script_dir=$(dirname $(readlink -f "$0")) +kata_version="${kata_version:-}" source "${script_dir}/../../scripts/lib.sh" @@ -17,13 +18,13 @@ cloud_hypervisor_version="${cloud_hypervisor_version:-}" if [ -z "$cloud_hypervisor_repo" ]; then info "Get cloud_hypervisor information from runtime versions.yaml" - cloud_hypervisor_url=$(get_from_kata_deps "assets.hypervisor.cloud_hypervisor.url") + cloud_hypervisor_url=$(get_from_kata_deps "assets.hypervisor.cloud_hypervisor.url" "${kata_version}") [ -n "$cloud_hypervisor_url" ] || die "failed to get cloud_hypervisor url" cloud_hypervisor_repo="${cloud_hypervisor_url}.git" fi [ -n "$cloud_hypervisor_repo" ] || die "failed to get cloud_hypervisor repo" -[ -n "$cloud_hypervisor_version" ] || cloud_hypervisor_version=$(get_from_kata_deps "assets.hypervisor.cloud_hypervisor.version") +[ -n "$cloud_hypervisor_version" ] || cloud_hypervisor_version=$(get_from_kata_deps "assets.hypervisor.cloud_hypervisor.version" "${kata_version}") [ -n "$cloud_hypervisor_version" ] || die "failed to get cloud_hypervisor version" info "Build ${cloud_hypervisor_repo} version: ${cloud_hypervisor_version}" diff --git a/static-build/firecracker/build-static-firecracker.sh b/static-build/firecracker/build-static-firecracker.sh index ad43c7dc66..09cf4e390f 100755 --- a/static-build/firecracker/build-static-firecracker.sh +++ b/static-build/firecracker/build-static-firecracker.sh @@ -16,16 +16,17 @@ config_dir="${script_dir}/../../scripts/" firecracker_repo="${firecracker_repo:-}" firecracker_version="${firecracker_version:-}" +kata_version="${kata_version:-}" if [ -z "$firecracker_repo" ]; then info "Get firecracker information from runtime versions.yaml" - firecracker_url=$(get_from_kata_deps "assets.hypervisor.firecracker.url") + firecracker_url=$(get_from_kata_deps "assets.hypervisor.firecracker.url" "${kata_version}") [ -n "$firecracker_url" ] || die "failed to get firecracker url" firecracker_repo="${firecracker_url}.git" fi [ -n "$firecracker_repo" ] || die "failed to get firecracker repo" -[ -n "$firecracker_version" ] || firecracker_version=$(get_from_kata_deps "assets.hypervisor.firecracker.version") +[ -n "$firecracker_version" ] || firecracker_version=$(get_from_kata_deps "assets.hypervisor.firecracker.version" "${kata_version}") [ -n "$firecracker_version" ] || die "failed to get firecracker version" info "Build ${firecracker_repo} version: ${firecracker_version}" diff --git a/static-build/nemu/build-static-nemu.sh b/static-build/nemu/build-static-nemu.sh index bc1f7957ee..d934d489fa 100755 --- a/static-build/nemu/build-static-nemu.sh +++ b/static-build/nemu/build-static-nemu.sh @@ -14,8 +14,8 @@ source "${script_dir}/../../scripts/lib.sh" source "${script_dir}/../qemu.blacklist" config_dir="${script_dir}/../../scripts/" -nemu_tar="kata-nemu-static.tar.gz" -nemu_tmp_tar="kata-nemu-static-tmp.tar.gz" +nemu_tar="kata-static-nemu.tar.gz" +nemu_tmp_tar="kata-static-nemu-tmp.tar.gz" Dockerfile="Dockerfile" if [ $# -ne 0 ];then @@ -45,24 +45,25 @@ nemu_repo="${nemu_repo:-}" nemu_version="${nemu_version:-}" nemu_ovmf_repo="${nemu_ovmf_repo:-}" nemu_ovmf_version="${nemu_ovmf_version:-}" +kata_version="${kata_version:-}" if [ -z "$nemu_repo" ]; then info "Get nemu information from runtime versions.yaml" - nemu_repo=$(get_from_kata_deps "assets.hypervisor.nemu.url") + nemu_repo=$(get_from_kata_deps "assets.hypervisor.nemu.url" "$kata_version") fi [ -n "$nemu_repo" ] || die "failed to get nemu repo" -[ -n "$nemu_version" ] || nemu_version=$(get_from_kata_deps "assets.hypervisor.nemu.version") +[ -n "$nemu_version" ] || nemu_version=$(get_from_kata_deps "assets.hypervisor.nemu.version" "$kata_version") [ -n "$nemu_version" ] || die "failed to get nemu version" if [ -z "$nemu_ovmf_repo" ]; then info "Get nemu information from runtime versions.yaml" - nemu_ovmf_repo=$(get_from_kata_deps "assets.hypervisor.nemu-ovmf.url") + nemu_ovmf_repo=$(get_from_kata_deps "assets.hypervisor.nemu-ovmf.url" "$kata_version") [ -n "$nemu_ovmf_repo" ] || die "failed to get nemu ovmf repo url" fi if [ -z "$nemu_ovmf_version" ]; then - nemu_ovmf_version=$(get_from_kata_deps "assets.hypervisor.nemu-ovmf.version") + nemu_ovmf_version=$(get_from_kata_deps "assets.hypervisor.nemu-ovmf.version" "$kata_version") [ -n "$nemu_ovmf_version" ] || die "failed to get nemu ovmf version" fi diff --git a/static-build/qemu-virtiofs/build-static-qemu-virtiofs.sh b/static-build/qemu-virtiofs/build-static-qemu-virtiofs.sh index c8765cf0bf..dd89c32f2f 100755 --- a/static-build/qemu-virtiofs/build-static-qemu-virtiofs.sh +++ b/static-build/qemu-virtiofs/build-static-qemu-virtiofs.sh @@ -13,10 +13,11 @@ script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "${script_dir}/../../scripts/lib.sh" source "${script_dir}/../qemu.blacklist" +kata_version="${kata_version:-}" packaging_dir="${script_dir}/../.." -qemu_virtiofs_repo=$(get_from_kata_deps "assets.hypervisor.qemu-experimental.url") +qemu_virtiofs_repo=$(get_from_kata_deps "assets.hypervisor.qemu-experimental.url" "${kata_version}") # This tag will be supported on the runtime versions.yaml -qemu_virtiofs_tag=$(get_from_kata_deps "assets.hypervisor.qemu-experimental.tag") +qemu_virtiofs_tag=$(get_from_kata_deps "assets.hypervisor.qemu-experimental.tag" "${kata_version}") qemu_virtiofs_tar="kata-static-qemu-virtiofsd.tar.gz" qemu_tmp_tar="kata-static-qemu-virtiofsd-tmp.tar.gz" diff --git a/static-build/qemu/build-static-qemu.sh b/static-build/qemu/build-static-qemu.sh index 7939889564..fd6f52439f 100755 --- a/static-build/qemu/build-static-qemu.sh +++ b/static-build/qemu/build-static-qemu.sh @@ -19,18 +19,19 @@ qemu_tmp_tar="kata-static-qemu-tmp.tar.gz" qemu_repo="${qemu_repo:-}" qemu_version="${qemu_version:-}" +kata_version="${kata_version:-}" if [ -z "$qemu_repo" ]; then info "Get qemu information from runtime versions.yaml" - qemu_url=$(get_from_kata_deps "assets.hypervisor.qemu.url") + qemu_url=$(get_from_kata_deps "assets.hypervisor.qemu.url" "${kata_version}") [ -n "$qemu_url" ] || die "failed to get qemu url" qemu_repo="${qemu_url}.git" fi [ -n "$qemu_repo" ] || die "failed to get qemu repo" -[ -n "$qemu_version" ] || qemu_version=$(get_from_kata_deps "assets.hypervisor.qemu.version") +[ -n "$qemu_version" ] || qemu_version=$(get_from_kata_deps "assets.hypervisor.qemu.version" "${kata_version}") if ! (git ls-remote --heads "${qemu_url}" | grep -q "refs/heads/${qemu_version}"); then - qemu_version=$(get_from_kata_deps "assets.hypervisor.qemu.tag") + qemu_version=$(get_from_kata_deps "assets.hypervisor.qemu.tag" "${kata_version}") fi [ -n "$qemu_version" ] || die "failed to get qemu version" From ff20f2008b8d53ff49f3d115d1ae71ce061d7bc6 Mon Sep 17 00:00:00 2001 From: Archana Shinde Date: Tue, 3 Dec 2019 18:03:24 -0800 Subject: [PATCH 2/2] release: Checkout right version of kernel patches Checkout tag for packaging repo based on env variable NEW_VERSION or kata_version with kata_version taking precedence. With this, we checkout to the right version of packaging repo before applying kernel patches. Fixes #849 Signed-off-by: Archana Shinde --- kernel/build-kernel.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/kernel/build-kernel.sh b/kernel/build-kernel.sh index 102e71c34c..16524f825d 100755 --- a/kernel/build-kernel.sh +++ b/kernel/build-kernel.sh @@ -271,7 +271,13 @@ get_config_and_patches() { if [ -z "${patches_path}" ]; then info "Clone config and patches" patches_path="${default_patches_dir}" - [ -d "${patches_path}" ] || git clone "https://${patches_repo}.git" "${patches_repo_dir}" + if [ ! -d "${patches_path}" ]; then + tag="${kata_version:-$NEW_VERSION}" + git clone "https://${patches_repo}.git" "${patches_repo_dir}" + pushd "${patches_repo_dir}" >> /dev/null + git checkout $tag + popd >> /dev/null + fi fi }