From cf3d348296e4768cc0ec517f9bc2162f02eadd3c Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Thu, 14 Feb 2019 23:28:25 -0500 Subject: Refactor build/publish --- build.sh | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 61 insertions(+), 15 deletions(-) (limited to 'build.sh') diff --git a/build.sh b/build.sh index 0e8e3c2..d57a03c 100755 --- a/build.sh +++ b/build.sh @@ -1,24 +1,70 @@ #!/bin/bash -PROJECT=astroconda/python -PYTHON_VERSION="${1}" -if [[ -z ${PYTHON_VERSION} ]]; then - echo "Need a fully qualified Python version to build. [e.g. 3.7.1]" +HUB=${3:-astroconda} +PROJECT=${HUB}/python +PROJECT_VERSION="${1}" +BASE_IMG_VERSION=${2:-latest} +TAGS=() + +if [[ -z ${PROJECT_VERSION} ]]; then + echo "Python version required [e.g. 3.7.1]" exit 1 fi -BASE_VERSION="${2}" -if [[ -z ${BASE_VERSION} ]]; then - BASE_VERSION="latest" -fi +set -x +read \ + PROJECT_VERSION_MAJOR \ + PROJECT_VERSION_MINOR \ + PROJECT_VERSION_PATCH <<< ${PROJECT_VERSION//\./ } + +case "${HUB}" in + *amazonaws\.com) + if ! type -p aws; then + echo "awscli client not installed" + exit 1 + fi + REGION="$(awk -F'.' '{print $(NF-2)}' <<< ${HUB})" + $(aws ecr get-login --no-include-email --region ${REGION}) + unset REGION + ;; + *) + # Assume default index + docker login + ;; +esac -is_tag_latest=$([[ -f LATEST ]] && [[ $( 0 )); then + echo "Failed... Image not published" + exit ${rv} +fi + + +max_retry=4 +retry=0 +set +e +while (( retry != max_retry )) +do + echo "Push attempt #$(( retry + 1 ))" + docker push "${PROJECT}" + rv=$? + if [[ ${rv} == 0 ]]; then + break + fi + (( retry++ )) +done + +exit ${rv} -- cgit