mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-09-20 00:07:55 +00:00
Merge pull request #292 from marcov/versions.yaml
agent: detect required Go version from versions.yaml
This commit is contained in:
@@ -20,6 +20,5 @@ clone_tests_repo()
|
|||||||
|
|
||||||
run_static_checks()
|
run_static_checks()
|
||||||
{
|
{
|
||||||
clone_tests_repo
|
|
||||||
bash "$tests_repo_dir/.ci/static-checks.sh" "github.com/kata-containers/osbuilder"
|
bash "$tests_repo_dir/.ci/static-checks.sh" "github.com/kata-containers/osbuilder"
|
||||||
}
|
}
|
||||||
|
@@ -22,8 +22,13 @@ elif [ "$ID" == ubuntu ];then
|
|||||||
sudo apt-get -qq update
|
sudo apt-get -qq update
|
||||||
sudo apt-get install -y -qq make automake qemu-utils python-pip coreutils moreutils bc
|
sudo apt-get install -y -qq make automake qemu-utils python-pip coreutils moreutils bc
|
||||||
sudo pip install yamllint
|
sudo pip install yamllint
|
||||||
else
|
else
|
||||||
echo "Linux distribution not supported"
|
echo "Linux distribution not supported"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
clone_tests_repo
|
||||||
bash "${cidir}/static-checks.sh"
|
bash "${cidir}/static-checks.sh"
|
||||||
|
# yq needed to correctly parse runtime/versions.yaml
|
||||||
|
make -C ${tests_repo_dir} install-yq
|
||||||
|
|
||||||
|
@@ -5,4 +5,14 @@
|
|||||||
|
|
||||||
From golang:@GO_VERSION@-alpine
|
From golang:@GO_VERSION@-alpine
|
||||||
|
|
||||||
RUN apk update && apk add git make bash gcc musl-dev linux-headers apk-tools-static libseccomp libseccomp-dev
|
RUN apk update && apk add \
|
||||||
|
git \
|
||||||
|
make \
|
||||||
|
bash \
|
||||||
|
gcc \
|
||||||
|
musl-dev \
|
||||||
|
linux-headers \
|
||||||
|
apk-tools-static \
|
||||||
|
libseccomp \
|
||||||
|
libseccomp-dev \
|
||||||
|
curl
|
||||||
|
@@ -7,7 +7,15 @@ From centos:@OS_VERSION@
|
|||||||
|
|
||||||
@SET_PROXY@
|
@SET_PROXY@
|
||||||
|
|
||||||
RUN yum -y update && yum install -y git make gcc coreutils libseccomp libseccomp-devel chrony
|
RUN yum -y update && yum install -y \
|
||||||
|
git \
|
||||||
|
make \
|
||||||
|
gcc \
|
||||||
|
coreutils \
|
||||||
|
libseccomp \
|
||||||
|
libseccomp-devel \
|
||||||
|
chrony \
|
||||||
|
curl
|
||||||
|
|
||||||
# This will install the proper golang to build Kata components
|
# This will install the proper golang to build Kata components
|
||||||
@INSTALL_GO@
|
@INSTALL_GO@
|
||||||
|
@@ -7,7 +7,16 @@ From fedora:27
|
|||||||
|
|
||||||
@SET_PROXY@
|
@SET_PROXY@
|
||||||
|
|
||||||
RUN dnf -y update && dnf install -y git systemd pkgconfig gcc coreutils libseccomp libseccomp-devel chrony
|
RUN dnf -y update && dnf install -y \
|
||||||
|
git \
|
||||||
|
systemd \
|
||||||
|
pkgconfig \
|
||||||
|
gcc \
|
||||||
|
coreutils \
|
||||||
|
libseccomp \
|
||||||
|
libseccomp-devel \
|
||||||
|
chrony \
|
||||||
|
curl
|
||||||
|
|
||||||
# This will install the proper golang to build Kata components
|
# This will install the proper golang to build Kata components
|
||||||
@INSTALL_GO@
|
@INSTALL_GO@
|
||||||
|
@@ -7,7 +7,14 @@ FROM euleros:@OS_VERSION@
|
|||||||
|
|
||||||
@SET_PROXY@
|
@SET_PROXY@
|
||||||
|
|
||||||
RUN yum -y update && yum install -y yum git make gcc coreutils chrony
|
RUN yum -y update && yum install -y \
|
||||||
|
yum \
|
||||||
|
git \
|
||||||
|
make \
|
||||||
|
gcc \
|
||||||
|
coreutils \
|
||||||
|
chrony \
|
||||||
|
curl
|
||||||
|
|
||||||
# This will install the proper golang to build Kata components
|
# This will install the proper golang to build Kata components
|
||||||
@INSTALL_GO@
|
@INSTALL_GO@
|
||||||
|
@@ -7,7 +7,17 @@ From fedora:@OS_VERSION@
|
|||||||
|
|
||||||
@SET_PROXY@
|
@SET_PROXY@
|
||||||
|
|
||||||
RUN dnf -y update && dnf install -y git redhat-release systemd pkgconfig gcc make libseccomp libseccomp-devel chrony
|
RUN dnf -y update && dnf install -y \
|
||||||
|
git \
|
||||||
|
redhat-release \
|
||||||
|
systemd \
|
||||||
|
pkgconfig \
|
||||||
|
gcc \
|
||||||
|
make \
|
||||||
|
libseccomp \
|
||||||
|
libseccomp-devel \
|
||||||
|
chrony \
|
||||||
|
curl
|
||||||
|
|
||||||
# This will install the proper golang to build Kata components
|
# This will install the proper golang to build Kata components
|
||||||
@INSTALL_GO@
|
@INSTALL_GO@
|
||||||
|
@@ -17,6 +17,7 @@ AGENT_INIT=${AGENT_INIT:-no}
|
|||||||
KERNEL_MODULES_DIR=${KERNEL_MODULES_DIR:-""}
|
KERNEL_MODULES_DIR=${KERNEL_MODULES_DIR:-""}
|
||||||
OSBUILDER_VERSION="unknown"
|
OSBUILDER_VERSION="unknown"
|
||||||
DOCKER_RUNTIME=${DOCKER_RUNTIME:-runc}
|
DOCKER_RUNTIME=${DOCKER_RUNTIME:-runc}
|
||||||
|
GO_VERSION=
|
||||||
export GOPATH=${GOPATH:-${HOME}/go}
|
export GOPATH=${GOPATH:-${HOME}/go}
|
||||||
|
|
||||||
lib_file="${script_dir}/../scripts/lib.sh"
|
lib_file="${script_dir}/../scripts/lib.sh"
|
||||||
@@ -25,9 +26,6 @@ source "$lib_file"
|
|||||||
# Default architecture
|
# Default architecture
|
||||||
ARCH=$(uname -m)
|
ARCH=$(uname -m)
|
||||||
|
|
||||||
# Load default versions for golang and other componets
|
|
||||||
source "${script_dir}/versions.txt"
|
|
||||||
|
|
||||||
# distro-specific config file
|
# distro-specific config file
|
||||||
typeset -r CONFIG_SH="config.sh"
|
typeset -r CONFIG_SH="config.sh"
|
||||||
|
|
||||||
@@ -247,6 +245,53 @@ error_handler()
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
detect_go_version()
|
||||||
|
{
|
||||||
|
typeset -r yq=$(command -v yq || command -v ${GOPATH}/bin/yq)
|
||||||
|
[ -z "$yq" ] && die "'yq' application not found (needed to parsing minimum Go version required)"
|
||||||
|
|
||||||
|
local runtimeRevision=
|
||||||
|
|
||||||
|
if [ "${AGENT_VERSION:-master}" == "master" ]; then
|
||||||
|
# This matches both AGENT_VERSION == "" and AGENT_VERSION == "master"
|
||||||
|
runtimeRevision="master"
|
||||||
|
else
|
||||||
|
# Detect runtime revision by fetching the agent's VERSION file
|
||||||
|
runtimeRevision="$(curl -fsSL https://raw.githubusercontent.com/kata-containers/agent/${AGENT_VERSION:-master}/VERSION)"
|
||||||
|
[ -z "$runtimeRevision" ] && die "Could not detect the agent version for the given AGENT_VERSION='${AGENT_VERSION:-master}'"
|
||||||
|
fi
|
||||||
|
|
||||||
|
typeset -r runtimeVersionsURL="https://raw.githubusercontent.com/kata-containers/runtime/${runtimeRevision}/versions.yaml"
|
||||||
|
GO_VERSION="$(curl -fsSL "$runtimeVersionsURL" | $yq r - "languages.golang.version")"
|
||||||
|
|
||||||
|
[ "$?" == "0" ] && [ "$GO_VERSION" != "null" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# Compares two SEMVER-style versions passed as arguments, up to the MINOR version
|
||||||
|
# number.
|
||||||
|
# Returns a zero exit code if the version specified by the first argument is
|
||||||
|
# older OR equal than / to the version in the second argument, non-zero exit
|
||||||
|
# code otherwise.
|
||||||
|
compare_versions()
|
||||||
|
{
|
||||||
|
typeset -i -a v1=($(echo "$1" | awk 'BEGIN {FS = "."} {print $1" "$2}'))
|
||||||
|
typeset -i -a v2=($(echo "$2" | awk 'BEGIN {FS = "."} {print $1" "$2}'))
|
||||||
|
|
||||||
|
# Sanity check: first version can't be all zero
|
||||||
|
[ "${v1[0]}" -eq "0" ] && \
|
||||||
|
[ "${v1[1]}" -eq "0" ] && \
|
||||||
|
die "Failed to parse version number"
|
||||||
|
|
||||||
|
# Major
|
||||||
|
[ "${v1[0]}" -gt "${v2[0]}" ] && { false; return; }
|
||||||
|
|
||||||
|
# Minor
|
||||||
|
[ "${v1[0]}" -eq "${v2[0]}" ] && \
|
||||||
|
[ "${v1[1]}" -gt "${v2[1]}" ] && { false; return; }
|
||||||
|
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
while getopts a:hlo:r:t: opt
|
while getopts a:hlo:r:t: opt
|
||||||
do
|
do
|
||||||
case $opt in
|
case $opt in
|
||||||
@@ -311,7 +356,18 @@ fi
|
|||||||
|
|
||||||
mkdir -p ${ROOTFS_DIR}
|
mkdir -p ${ROOTFS_DIR}
|
||||||
|
|
||||||
if [ -n "${USE_DOCKER}" ] ; then
|
detect_go_version ||
|
||||||
|
die "Could not detect the required Go version for AGENT_VERSION='${AGENT_VERSION:-master}'."
|
||||||
|
|
||||||
|
echo "Required Go version: $GO_VERSION"
|
||||||
|
|
||||||
|
if [ -z "${USE_DOCKER}" ] ; then
|
||||||
|
#Generate an error if the local Go version is too old
|
||||||
|
foundVersion=$(go version | sed -E "s/^.+([0-9]+\.[0-9]+\.[0-9]+).*$/\1/g")
|
||||||
|
|
||||||
|
compare_versions "$GO_VERSION" $foundVersion || \
|
||||||
|
die "Your Go version $foundVersion is older than the minimum expected Go version $GO_VERSION"
|
||||||
|
else
|
||||||
image_name="${distro}-rootfs-osbuilder"
|
image_name="${distro}-rootfs-osbuilder"
|
||||||
|
|
||||||
generate_dockerfile "${distro_config_dir}"
|
generate_dockerfile "${distro_config_dir}"
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
GO_VERSION=1.11.1
|
|
Reference in New Issue
Block a user