summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@users.noreply.github.com>2019-02-14 16:30:57 -0500
committerGitHub <noreply@github.com>2019-02-14 16:30:57 -0500
commit813d63b5872dcfa71cdf86f8f8bcdd0c2dcdd0c6 (patch)
tree29089e845b4ce199d9b57ae703b2e9fae7c83a5c
parent25a0506f23674ea08d0e4c38781a5895d55fced2 (diff)
parent777ff94eeaa8416df9263525393fc8678515ab7f (diff)
downloaddocker-base-813d63b5872dcfa71cdf86f8f8bcdd0c2dcdd0c6.tar.gz
Merge pull request #1 from jhunkeler/subtle-fun1.0.0
Subtle fun
-rw-r--r--Dockerfile23
-rw-r--r--LATEST1
-rwxr-xr-xbuild.sh66
3 files changed, 73 insertions, 17 deletions
diff --git a/Dockerfile b/Dockerfile
index 91670d7..852d6fe 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -2,6 +2,11 @@ FROM centos:6.9
LABEL maintainer="jhunk@stsci.edu" \
vendor="Space Telescope Science Institute"
+ARG USER_ACCT=${USER_ACCT:-developer}
+ARG USER_HOME=/home/${USER_ACCT}
+ARG USER_UID=${USER_UID:-1000}
+ARG USER_GID=${USER_GID:-1000}
+
ENV TOOLCHAIN="/opt/toolchain"
ENV TOOLCHAIN_BIN="${TOOLCHAIN}/bin"
ENV TOOLCHAIN_LIB="${TOOLCHAIN}/lib"
@@ -12,21 +17,14 @@ ENV TOOLCHAIN_MAN="${TOOLCHAIN_DATA}/man"
ENV TOOLCHAIN_PKGCONFIG="${TOOLCHAIN_LIB}/pkgconfig"
ENV TOOLCHAIN_BUILD="/opt/buildroot"
-ENV PATH="${TOOLCHAIN_BIN}:${PATH}"
-ENV CFLAGS="-I${TOOLCHAIN_INCLUDE}"
-ENV LDFLAGS="-L${TOOLCHAIN_LIB} -Wl,-rpath=${TOOLCHAIN_LIB}"
-ENV PKG_CONFIG_PATH="${TOOLCHAIN_PKGCONFIG}"
-
-ARG PYTHON_VERSION=${PYTHON_VERSION:-3.7.1}
-ARG USER_ACCT=${USER_ACCT:-developer}
-ARG USER_HOME=/home/${USER_ACCT}
-ARG USER_UID=${USER_UID:-1000}
-ARG USER_GID=${USER_GID:-1000}
-
ENV USER_ACCT=${USER_ACCT} \
USER_HOME=${USER_HOME} \
USER_UID=${USER_UID} \
USER_GID=${USER_GID} \
+ PATH="${TOOLCHAIN_BIN}:${PATH}" \
+ CFLAGS="-I${TOOLCHAIN_INCLUDE}" \
+ LDFLAGS="-L${TOOLCHAIN_LIB} -Wl,-rpath=${TOOLCHAIN_LIB}" \
+ PKG_CONFIG_PATH="${TOOLCHAIN_PKGCONFIG}" \
LC_ALL=en_US.UTF-8 \
LANG=en_US.UTF-8 \
LANGUAGE=en_US.UTF-8
@@ -44,7 +42,7 @@ RUN groupadd -g ${USER_GID} ${USER_ACCT} \
gcc \
gcc-c++ \
gcc-gfortran \
- glibc \
+ glibc-devel \
make \
perl \
pkgconfig \
@@ -52,6 +50,7 @@ RUN groupadd -g ${USER_GID} ${USER_ACCT} \
wget \
which \
zlib-devel \
+ xz \
&& yum clean all
WORKDIR "${TOOLCHAIN_BUILD}"
diff --git a/LATEST b/LATEST
new file mode 100644
index 0000000..3eefcb9
--- /dev/null
+++ b/LATEST
@@ -0,0 +1 @@
+1.0.0
diff --git a/build.sh b/build.sh
index 0254885..cb4b5d7 100755
--- a/build.sh
+++ b/build.sh
@@ -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}