diff options
author | Joseph Hunkeler <jhunkeler@users.noreply.github.com> | 2019-02-14 16:30:57 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-14 16:30:57 -0500 |
commit | 813d63b5872dcfa71cdf86f8f8bcdd0c2dcdd0c6 (patch) | |
tree | 29089e845b4ce199d9b57ae703b2e9fae7c83a5c /build.sh | |
parent | 25a0506f23674ea08d0e4c38781a5895d55fced2 (diff) | |
parent | 777ff94eeaa8416df9263525393fc8678515ab7f (diff) | |
download | docker-base-813d63b5872dcfa71cdf86f8f8bcdd0c2dcdd0c6.tar.gz |
Merge pull request #1 from jhunkeler/subtle-fun1.0.0
Subtle fun
Diffstat (limited to 'build.sh')
-rwxr-xr-x | build.sh | 66 |
1 files changed, 61 insertions, 5 deletions
@@ -1,9 +1,65 @@ #!/bin/bash -PROJECT=astroconda/base -VERSION="${1}" -if [[ -z ${VERSION} ]]; then - echo "Project version required [e.g. 1.2.3]" +set -x +HUB=${3:-astroconda} +PROJECT=${HUB}/base +PROJECT_VERSION="${1}" +TAGS=() + +if [[ -z ${PROJECT_VERSION} ]]; then + echo "Project version required [e.g. 1.2.3... \$(git describe)]" exit 1 fi -docker build -t ${PROJECT}:latest -t ${PROJECT}:${VERSION} . +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 + +TAGS+=( "-t ${PROJECT}:${PROJECT_VERSION}" ) +is_tag_latest=$([[ -f LATEST ]] && [[ $(<LATEST) == ${PROJECT_VERSION} ]] && echo yes) +if [[ -n ${is_tag_latest} ]]; then + TAGS+=( "-t ${PROJECT}:latest" ) + TAGS+=( "-t ${PROJECT}:${PROJECT_VERSION_MAJOR}" ) + TAGS+=( "-t ${PROJECT}:${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}" ) +fi + +docker build ${TAGS[@]} . +rv=$? + +if (( rv > 0 )); then + echo "Failed... Image not published" + exit $? +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} |