From 43a5d147f11928db879c801d9accd5eceaf0497a Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Wed, 30 Oct 2019 21:15:08 +0000 Subject: [PATCH] snap: use adopt-info to set grade and version adopt-info is a snapcraft feature that allows us to specify the snap grade and version at runtime. Depending on the environment the master or the latest stable branch can be used to build the Kata Containers snap, for the kata CI and launchpad snap-master branch, the master branch are used, otherwise the latest stable branch. Signed-off-by: Julio Montes --- snap/snapcraft.yaml | 45 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 8 deletions(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 6fd77f203b..5f5a2f9ada 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -1,16 +1,39 @@ name: kata-containers -version: "master" summary: Build lightweight VMs that seamlessly plug into the containers ecosystem description: | Kata Containers is an open source project and community working to build a standard implementation of lightweight Virtual Machines (VMs) that feel and perform like containers, but provide the workload isolation and security advantages of VMs -grade: stable confinement: classic +adopt-info: metadata parts: + metadata: + plugin: nil + prime: + - -* + build-packages: + - git + - git-extras + override-pull: | + branch="master" + + # kata CI or launchpad snap-master + if [ "${CI}" = "true" ] || echo "${SNAPCRAFT_IMAGE_INFO}" | egrep -o "build_url.*" | grep -q "${branch}"; then + snapcraftctl set-grade "devel" + else + # Get the latest stable version + runtime_url="https://github.com/kata-containers/runtime" + branch=$(git ls-remote --tags ${runtime_url} | egrep -o "refs.*" | egrep -v "\-alpha|\-rc|{}" | cut -d/ -f3 | sort -r | head -1) + snapcraftctl set-grade "stable" + fi + + snapcraftctl set-version "${branch}" + echo "${branch}" | tee ${SNAPCRAFT_STAGE}/kata_version + yq: + after: [metadata] plugin: nil prime: - -* @@ -41,8 +64,9 @@ parts: go: after: [yq] override-build: | + kata_version=$(cat ${SNAPCRAFT_STAGE}/kata_version) yq=$(realpath ../../yq/build/yq) - versions_url=https://raw.githubusercontent.com/kata-containers/runtime/${SNAPCRAFT_PROJECT_VERSION}/versions.yaml + versions_url=https://raw.githubusercontent.com/kata-containers/runtime/${kata_version}/versions.yaml version="$(curl -sSL ${versions_url} | ${yq} r - languages.golang.version)" curl -LO https://dl.google.com/go/go${version}.src.tar.gz tar -xf go${version}.src.tar.gz --strip-components=1 @@ -60,6 +84,7 @@ parts: plugin: nil build-attributes: [no-patchelf] override-build: | + kata_version=$(cat ${SNAPCRAFT_STAGE}/kata_version) pkg_name=runtime # set GOPATH @@ -71,7 +96,7 @@ parts: mkdir -p ${pkg_gopath} # download source - git clone -b ${SNAPCRAFT_PROJECT_VERSION} https://github.com/kata-containers/${pkg_name} ${pkg_gopath} + git clone -b ${kata_version} https://github.com/kata-containers/${pkg_name} ${pkg_gopath} cd ${pkg_gopath} # build and install @@ -98,6 +123,7 @@ parts: plugin: nil build-attributes: [no-patchelf] override-build: | + kata_version=$(cat ${SNAPCRAFT_STAGE}/kata_version) pkg_name=proxy # set GOPATH @@ -109,7 +135,7 @@ parts: mkdir -p ${pkg_gopath} # download source - git clone -b ${SNAPCRAFT_PROJECT_VERSION} https://github.com/kata-containers/${pkg_name} ${pkg_gopath} + git clone -b ${kata_version} https://github.com/kata-containers/${pkg_name} ${pkg_gopath} cd ${pkg_gopath} # build and install @@ -121,6 +147,7 @@ parts: plugin: nil build-attributes: [no-patchelf] override-build: | + kata_version=$(cat ${SNAPCRAFT_STAGE}/kata_version) pkg_name=shim # set GOPATH @@ -132,7 +159,7 @@ parts: mkdir -p ${pkg_gopath} # download source - git clone -b ${SNAPCRAFT_PROJECT_VERSION} https://github.com/kata-containers/${pkg_name} ${pkg_gopath} + git clone -b ${kata_version} https://github.com/kata-containers/${pkg_name} ${pkg_gopath} cd ${pkg_gopath} # build and install @@ -192,6 +219,7 @@ parts: plugin: nil build-attributes: [no-patchelf] override-build: | + kata_version=$(cat ${SNAPCRAFT_STAGE}/kata_version) pkg_name=ksm-throttler # set GOPATH @@ -203,7 +231,7 @@ parts: mkdir -p ${pkg_gopath} # download source - git clone -b ${SNAPCRAFT_PROJECT_VERSION} https://github.com/kata-containers/${pkg_name} ${pkg_gopath} + git clone -b ${kata_version} https://github.com/kata-containers/${pkg_name} ${pkg_gopath} cd ${pkg_gopath} # build and install @@ -280,11 +308,12 @@ parts: - libcapstone-dev - bc override-build: | + kata_version=$(cat ${SNAPCRAFT_STAGE}/kata_version) yq=$(realpath ../../yq/build/yq) pkg_name="qemu" configs_dir="${SNAPCRAFT_STAGE}/qemu/default-configs" - versions_url=https://raw.githubusercontent.com/kata-containers/runtime/${SNAPCRAFT_PROJECT_VERSION}/versions.yaml + versions_url=https://raw.githubusercontent.com/kata-containers/runtime/${kata_version}/versions.yaml # arch-specific definition case "$(uname -m)" in "aarch64")