#!/bin/sh ARCH=$1 VARIANT=$2 TAG=$3 set -x set -e # set -o pipefail CI_REGISTRY=${CI_REGISTRY:-registry.gitlab.com} CONTAINER_NAME=$CI_REGISTRY/$CI_PROJECT_PATH/$ARCH-$VARIANT BASE_CONTAINER=${4:-balenalib/$ARCH-$VARIANT:$TAG} ERLANG_CONTAINER=$CI_REGISTRY/jimsy/balena-erlang/$ARCH-$VARIANT-build if (echo $ARCH | grep 'arm\|aarch64\|rpi') then CROSS_BUILD_START='RUN [ "cross-build-start" ]' CROSS_BUILD_END='RUN [ "cross-build-start" ]' else CROSS_BUILD_START='' CROSS_BUILD_END='' fi docker pull $BASE_CONTAINER || true docker pull -a $CONTAINER_NAME-build || true docker pull -a $CONTAINER_NAME || true docker pull -a $ERLANG_CONTAINER || true grep -v '^#' versions | sort -r | while IFS=' ' read ELIXIR_VERSION ERLANG_MAJOR_VERSION do echo "Elixir version ${ELIXIR_VERSION} on Erlang ${ERLANG_MAJOR_VERSION}" ELIXIR_MAJOR_VERSION=$(echo $ELIXIR_VERSION | cut -d\. -f1-2) TEMP_CONTAINER=$ARCH-$VARIANT-build-$ELIXIR_VERSION-$TAG:$CI_COMMIT_SHA sed \ -e "s~#{CROSS_BUILD_START}~$CROSS_BUILD_START~g" \ -e "s~#{CROSS_BUILD_END}~$CROSS_BUILD_END~g" \ -e "s~#{FROM}~$ERLANG_CONTAINER:$ERLANG_MAJOR_VERSION-$TAG~g" \ -e "s~#{VERSION}~$ELIXIR_VERSION~g" \ Dockerfile.$VARIANT.build.tpl > Dockerfile docker build --tag $TEMP_CONTAINER . docker tag $TEMP_CONTAINER $CONTAINER_NAME-build:$ELIXIR_VERSION-$TAG docker tag $TEMP_CONTAINER $CONTAINER_NAME-build:$ELIXIR_MAJOR_VERSION-$TAG docker push $CONTAINER_NAME-build:$ELIXIR_VERSION-$TAG docker push $CONTAINER_NAME-build:$ELIXIR_MAJOR_VERSION-$TAG if test $TAG = 'latest' then docker tag $TEMP_CONTAINER $CONTAINER_NAME-build:$ELIXIR_VERSION-latest docker tag $TEMP_CONTAINER $CONTAINER_NAME-build:$ELIXIR_VERSION docker tag $TEMP_CONTAINER $CONTAINER_NAME-build:$ELIXIR_MAJOR_VERSION-latest docker tag $TEMP_CONTAINER $CONTAINER_NAME-build:$ELIXIR_MAJOR_VERSION docker push $CONTAINER_NAME-build:$ELIXIR_VERSION-latest docker push $CONTAINER_NAME-build:$ELIXIR_VERSION docker push $CONTAINER_NAME-build:$ELIXIR_MAJOR_VERSION-latest docker push $CONTAINER_NAME-build:$ELIXIR_MAJOR_VERSION fi TEMP_CONTAINER=$ARCH-$VARIANT-run-$ELIXIR_VERSION-$TAG:$CI_COMMIT_SHA sed \ -e "s~#{BUILDER}~$CONTAINER_NAME-build:$ELIXIR_VERSION-$TAG~g" \ -e "s~#{FROM}~$BASE_CONTAINER~g" \ Dockerfile.$VARIANT.run.tpl > Dockerfile docker build --tag $TEMP_CONTAINER . docker tag $TEMP_CONTAINER $CONTAINER_NAME:$ELIXIR_VERSION-$TAG docker tag $TEMP_CONTAINER $CONTAINER_NAME:$ELIXIR_MAJOR_VERSION-$TAG docker push $CONTAINER_NAME:$ELIXIR_VERSION-$TAG docker push $CONTAINER_NAME:$ELIXIR_MAJOR_VERSION-$TAG if test $TAG = 'latest' then docker tag $TEMP_CONTAINER $CONTAINER_NAME:$ELIXIR_VERSION-latest docker tag $TEMP_CONTAINER $CONTAINER_NAME:$ELIXIR_VERSION docker tag $TEMP_CONTAINER $CONTAINER_NAME:$ELIXIR_MAJOR_VERSION-latest docker tag $TEMP_CONTAINER $CONTAINER_NAME:$ELIXIR_MAJOR_VERSION docker push $CONTAINER_NAME:$ELIXIR_VERSION-latest docker push $CONTAINER_NAME:$ELIXIR_VERSION docker push $CONTAINER_NAME:$ELIXIR_MAJOR_VERSION-latest docker push $CONTAINER_NAME:$ELIXIR_MAJOR_VERSION fi done