From: Anil Belur Date: Sat, 7 Apr 2018 00:30:22 +0000 (+0000) Subject: Merge "Validate packer version before install" X-Git-Tag: v0.18.0~12 X-Git-Url: https://gerrit.linuxfoundation.org/infra/gitweb?a=commitdiff_plain;h=7523625d22342839f99c02c0400a4b5d17252671;hp=ad0ee7c792b24345f2b419b3418bd84eac0f6ac1;p=releng%2Fglobal-jjb.git Merge "Validate packer version before install" --- diff --git a/shell/packer-install.sh b/shell/packer-install.sh index 8b3ef6d5..90780cbf 100644 --- a/shell/packer-install.sh +++ b/shell/packer-install.sh @@ -12,18 +12,14 @@ echo "---> packer-install.sh" # The script checks for the packer binaries and installs the binary # if its not available -# $PACKER_VERSION : Define a packer version passed as job paramter +# Ensure we fail the job if any steps fail. +set -eu -o pipefail +# $PACKER_VERSION : Define a packer version passed as job paramter PACKER_VERSION="${PACKER_VERSION:-1.1.3}" export PATH="${WORKSPACE}/bin:$PATH" -# Ensure we fail the job if any steps fail. -set -eu -o pipefail - -if hash packer.io 2>/dev/null; then - echo "packer.io command is available." -else - echo "packer.io command not is available. Installing packer ..." +packer_install() { # Installs Hashicorp's Packer binary, required for verify & merge packer jobs pushd "${WORKSPACE}" wget -nv "https://releases.hashicorp.com/packer/${PACKER_VERSION}/packer_${PACKER_VERSION}_linux_amd64.zip" @@ -32,4 +28,23 @@ else # rename packer to avoid conflict with binary in cracklib mv "${WORKSPACE}/bin/packer" "${WORKSPACE}/bin/packer.io" popd +} + +# Functions to compare semantic versions x.y.z +version_gt() { test "$(echo "$@" | tr " " "\n" | sort -V | head -n 1)" != "$1"; } +version_le() { test "$(echo "$@" | tr " " "\n" | sort -V | head -n 1)" == "$1"; } +version_lt() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" != "$1"; } +version_ge() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" == "$1"; } + +if hash packer.io 2>/dev/null; then + CURRENT_VERSION="$(packer.io --version)" + if version_lt $CURRENT_VERSION $PACKER_VERSION; then + echo "Packer version $CURRENT_VERSION installed is less than $PACKER_VERSION available, updating Packer." + packer_install + else + echo "Packer version installed $CURRENT_VERSION is greater than or equal to the required minimum version $PACKER_VERSION." + fi +else + echo "Packer binary not available, installing Packer version $PACKER_VERSION." + packer_install fi