mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-09-18 23:39:30 +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()
|
||||
{
|
||||
clone_tests_repo
|
||||
bash "$tests_repo_dir/.ci/static-checks.sh" "github.com/kata-containers/osbuilder"
|
||||
}
|
||||
|
@@ -26,4 +26,9 @@ else
|
||||
echo "Linux distribution not supported"
|
||||
fi
|
||||
|
||||
|
||||
clone_tests_repo
|
||||
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
|
||||
|
||||
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@
|
||||
|
||||
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
|
||||
@INSTALL_GO@
|
||||
|
@@ -7,7 +7,16 @@ From fedora:27
|
||||
|
||||
@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
|
||||
@INSTALL_GO@
|
||||
|
@@ -7,7 +7,14 @@ FROM euleros:@OS_VERSION@
|
||||
|
||||
@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
|
||||
@INSTALL_GO@
|
||||
|
@@ -7,7 +7,17 @@ From fedora:@OS_VERSION@
|
||||
|
||||
@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
|
||||
@INSTALL_GO@
|
||||
|
@@ -17,6 +17,7 @@ AGENT_INIT=${AGENT_INIT:-no}
|
||||
KERNEL_MODULES_DIR=${KERNEL_MODULES_DIR:-""}
|
||||
OSBUILDER_VERSION="unknown"
|
||||
DOCKER_RUNTIME=${DOCKER_RUNTIME:-runc}
|
||||
GO_VERSION=
|
||||
export GOPATH=${GOPATH:-${HOME}/go}
|
||||
|
||||
lib_file="${script_dir}/../scripts/lib.sh"
|
||||
@@ -25,9 +26,6 @@ source "$lib_file"
|
||||
# Default architecture
|
||||
ARCH=$(uname -m)
|
||||
|
||||
# Load default versions for golang and other componets
|
||||
source "${script_dir}/versions.txt"
|
||||
|
||||
# distro-specific config file
|
||||
typeset -r CONFIG_SH="config.sh"
|
||||
|
||||
@@ -247,6 +245,53 @@ error_handler()
|
||||
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
|
||||
do
|
||||
case $opt in
|
||||
@@ -311,7 +356,18 @@ fi
|
||||
|
||||
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"
|
||||
|
||||
generate_dockerfile "${distro_config_dir}"
|
||||
|
@@ -1 +0,0 @@
|
||||
GO_VERSION=1.11.1
|
Reference in New Issue
Block a user