From 1dd90d658341417b72a2ddbb135e9eb4e16ffa35 Mon Sep 17 00:00:00 2001 From: Damiano Albani Date: Tue, 28 Apr 2020 12:13:04 +0200 Subject: [PATCH] Determine OS and machine programmatically --- Dockerfile | 29 +++++++++++------------------ hooks/build | 6 +++++- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/Dockerfile b/Dockerfile index d4865ea..ea581b6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,30 +1,23 @@ FROM docker:stable MAINTAINER Jan Boonen -ARG VERSION -ENV OS "linux" -ENV BIT "64" +ARG VERSION="latest" +ARG OS="linux-gnu" +ARG MACHINE="x86_64" -RUN apk add --no-cache curl - -RUN VERSION=${VERSION:-latest} && \ +RUN apk add --no-cache curl jq && \ if [ $VERSION = 'latest' ]; then \ echo "Downloading latest version of Operator SDK from Github..." && \ - curl -sL https://api.github.com/repos/operator-framework/operator-sdk/releases |\ - grep browser_download |\ - grep ${OS} |\ - cut -d '"' -f 4 |\ - grep operator-sdk |\ - grep x86_${BIT}-${OS} |\ - grep -v .asc |\ - head -n 1 |\ - xargs curl -sOL; \ + curl -sSf https://api.github.com/repos/operator-framework/operator-sdk/releases/latest | \ + jq -r --arg MACHINE "$MACHINE" --arg OS "$OS" '.assets[] | select(.name | test("^operator-sdk-[v0-9.]+-" + $MACHINE + "-" + $OS + "$")) | .browser_download_url' | \ + xargs curl -sSfOL; \ else \ echo "Downloading version $VERSION of Operator SDK from Github..." && \ - curl -sOL "https://github.com/operator-framework/operator-sdk/releases/download/v${VERSION}/operator-sdk-v${VERSION}-x86_${BIT}-${OS}-gnu"; \ + curl -sSfOL "https://github.com/operator-framework/operator-sdk/releases/download/v${VERSION}/operator-sdk-v${VERSION}-${MACHINE}-${OS}"; \ fi && \ - cp ./operator-sdk-* /usr/local/bin/operator-sdk && rm -f ./operator-sdk* && \ - chmod a+x /usr/local/bin/operator-sdk && \ + apk del curl jq && \ + mv operator-sdk-* /usr/local/bin/operator-sdk && \ + chmod +x /usr/local/bin/operator-sdk && \ mkdir -p /source WORKDIR /source diff --git a/hooks/build b/hooks/build index a123ad5..7c94d45 100644 --- a/hooks/build +++ b/hooks/build @@ -1,2 +1,6 @@ #!/bin/bash -docker build --build-arg VERSION=$DOCKER_TAG -f $DOCKERFILE_PATH -t $IMAGE_NAME . +docker build --build-arg VERSION=${DOCKER_TAG} \ + --build-arg OS="${OSTYPE}" \ + --build-arg MACHINE=$(uname --machine) \ + -f ${DOCKERFILE_PATH} \ + -t ${IMAGE_NAME} .