From 33214c90d6b85e38737a17f6bc7e522c7d6a2cf5 Mon Sep 17 00:00:00 2001 From: Jose Carlos Venegas Munoz Date: Thu, 30 Aug 2018 15:35:39 -0500 Subject: [PATCH 1/3] image: Make sure agent sha is correct Fix image generation. Instead of use agent code from the host checkout to the agent source code in a clean GOPATH env. Make sure that the agent `commit id` is the correct before push to github or OBS. Fixes: #166 Signed-off-by: Jose Carlos Venegas Munoz --- obs-packaging/gen_versions_txt.sh | 5 ----- obs-packaging/kata-containers-image/build_image.sh | 7 +++++++ obs-packaging/kata-containers-image/update.sh | 2 +- release/publish-kata-image.sh | 9 +++++++-- scripts/lib.sh | 5 +++++ 5 files changed, 20 insertions(+), 8 deletions(-) diff --git a/obs-packaging/gen_versions_txt.sh b/obs-packaging/gen_versions_txt.sh index 167bb077de..e15f0ef67c 100755 --- a/obs-packaging/gen_versions_txt.sh +++ b/obs-packaging/gen_versions_txt.sh @@ -15,11 +15,6 @@ project="kata-containers" source "${script_dir}/../scripts/lib.sh" -get_kata_hash_from_tag() { - repo=$1 - git ls-remote --tags "https://github.com/${project}/${repo}.git" | grep "refs/tags/${kata_version}^{}" | awk '{print $1}' -} - gen_version_file() { local branch="$1" [ -n "${branch}" ] || exit 1 diff --git a/obs-packaging/kata-containers-image/build_image.sh b/obs-packaging/kata-containers-image/build_image.sh index 41f4554b44..66f0de9357 100755 --- a/obs-packaging/kata-containers-image/build_image.sh +++ b/obs-packaging/kata-containers-image/build_image.sh @@ -16,10 +16,16 @@ readonly script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" readonly project="kata-containers" readonly tmp_dir=$(mktemp -d -t build-image-tmp.XXXXXXXXXX) readonly osbuilder_url=https://github.com/${project}/osbuilder.git +export GOPATH="${tmp_dir}/go" export GOPATH=${GOPATH:-${HOME}/go} source "${script_dir}/../../scripts/lib.sh" +exit_handler() { + [ -d "${tmp_dir}" ] && sudo rm -rf "$tmp_dir" +} +trap exit_handler EXIT + arch_target="$(uname -m)" kata_version="master" @@ -47,6 +53,7 @@ build_image() { sudo -E PATH="${PATH}" make image \ DISTRO="${img_distro}" \ DEBUG="${DEBUG:-}" \ + USE_DOCKER="1" \ AGENT_VERSION="${agent_version}" \ IMG_OS_VERSION="${img_os_version}" \ DISTRO_ROOTFS="${tmp_dir}/rootfs-image" diff --git a/obs-packaging/kata-containers-image/update.sh b/obs-packaging/kata-containers-image/update.sh index 0059d11a36..360dba512d 100755 --- a/obs-packaging/kata-containers-image/update.sh +++ b/obs-packaging/kata-containers-image/update.sh @@ -48,7 +48,7 @@ replace_list=( verify rm -rf kata-containers.tar.gz -image_tarball=$(find . -name 'kata-containers-'"${VERSION}"'-*.tar.gz') +image_tarball=$(find . -name 'kata-containers-'"${VERSION}"'-'"${kata_agent_hash:0:11}"'-*.tar.gz') [ -f "${image_tarball}" ] || die "image not found" cp "${image_tarball}" kata-containers.tar.gz diff --git a/release/publish-kata-image.sh b/release/publish-kata-image.sh index 0896fda300..ebbd029183 100755 --- a/release/publish-kata-image.sh +++ b/release/publish-kata-image.sh @@ -17,6 +17,8 @@ readonly script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" readonly project="kata-containers" GOPATH=${GOPATH:-${HOME}/go} +source "${script_dir}/../scripts/lib.sh" + die() { msg="$*" echo "ERROR: ${FUNCNAME[1]} ${msg}" >&2 @@ -56,9 +58,12 @@ main() { kata_version=${1:-} [ -n "${kata_version}" ] || usage "1" - image_tarball=$(find -name 'kata-containers-*.tar.gz' | grep "${kata_version}") || + agent_sha=$(get_kata_hash_from_tag "agent" "${kata_version}") + # tarball only has 11 chars from agent sha + agent_sha=${agent_sha:0:11} + image_tarball=$(find -name 'kata-containers-*.tar.gz' | grep "${kata_version}" | grep "${agent_sha}") || "${script_dir}/../obs-packaging/kata-containers-image/build_image.sh" -v "${kata_version}" - image_tarball=$(find -name 'kata-containers-*.tar.gz' | grep "${kata_version}") || die "file not found ${image_tarball}" + image_tarball=$(find -name 'kata-containers-*.tar.gz' | grep "${kata_version}" | grep "${agent_sha}" ) || die "file not found ${image_tarball}" if [ ${push} == "true" ]; then hub -C "${GOPATH}/src/github.com/${project}/agent" release edit -a "${image_tarball}" "${kata_version}" diff --git a/scripts/lib.sh b/scripts/lib.sh index 4944b73374..732bb1f58b 100644 --- a/scripts/lib.sh +++ b/scripts/lib.sh @@ -82,3 +82,8 @@ build_hub() { ./script/build -o "${hub_bin}" popd >>/dev/null } + +get_kata_hash_from_tag() { + repo=$1 + git ls-remote --tags "https://github.com/${project}/${repo}.git" | grep "refs/tags/${kata_version}^{}" | awk '{print $1}' +} From 3d06a8381472112e30f903b482cf34855db4db67 Mon Sep 17 00:00:00 2001 From: Jose Carlos Venegas Munoz Date: Thu, 30 Aug 2018 20:57:05 -0500 Subject: [PATCH 2/3] obs: makefile: fix clean target. Clean target tries to remove files multiples times. Limit find max depth to not try to remove files more than once. Signed-off-by: Jose Carlos Venegas Munoz --- obs-packaging/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/obs-packaging/Makefile b/obs-packaging/Makefile index ff1192ef0f..6433acf1a2 100644 --- a/obs-packaging/Makefile +++ b/obs-packaging/Makefile @@ -5,4 +5,4 @@ clean: - find . -type d -name "*home:katacontainers*" -exec sudo rm -rf {} \; + find . -maxdepth 2 -type d -name '*home:katacontainers*' -exec sudo rm -rf {} \; From 985f88e763c1ebf7369339e5f58830cf696bf5ef Mon Sep 17 00:00:00 2001 From: Jose Carlos Venegas Munoz Date: Thu, 30 Aug 2018 20:58:45 -0500 Subject: [PATCH 3/3] obs: pkglib: dont grep if file does not exit. When tries to get release number from a new repo, the specfile wont exist. Dont do grep in this case. Signed-off-by: Jose Carlos Venegas Munoz --- obs-packaging/scripts/pkglib.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/obs-packaging/scripts/pkglib.sh b/obs-packaging/scripts/pkglib.sh index 99c26552b6..19d253870f 100644 --- a/obs-packaging/scripts/pkglib.sh +++ b/obs-packaging/scripts/pkglib.sh @@ -305,7 +305,7 @@ function get_obs_pkg_release() { local obs_pkg_name="$1" local pkg local repo_dir - local release + local release="" pkg=$(basename "${obs_pkg_name}") repo_dir=$(mktemp -d -u -t "${pkg}.XXXXXXXXXXX") @@ -314,9 +314,9 @@ function get_obs_pkg_release() { spec_file=$(find "${repo_dir}" -maxdepth 1 -type f -name '*.spec' | head -1) # Find in specfile in Release: XX field. - release=$(grep -oP 'Release:\s+[0-9]+' "${spec_file}" | grep -oP '[0-9]+') + [ ! -f "${spec_file}" ] || release=$(grep -oP 'Release:\s+[0-9]+' "${spec_file}" | grep -oP '[0-9]+') - if [ -z "${release}" ]; then + if [ -z "${release}" ] && [ -f "${spec_file}" ] ; then # Not release number found find in "%define release XX" release=$(grep -oP '%define\s+release\s+[0-9]+' "${spec_file}" | grep -oP '[0-9]+') fi @@ -324,7 +324,7 @@ function get_obs_pkg_release() { release_file=$(find "${repo_dir}" -maxdepth 1 -type f -name 'pkg-release') if [ -z "${release}" ] && [ -f "${release_file}" ]; then # Release still not found check pkg-release file - release=$(grep -oP '[0-9]+' ${release_file}) + release=$(grep -oP '[0-9]+' "${release_file}") fi if [ -z "${release}" ]; then # Not release number found, this is a new repository.