#!/bin/sh ARCHS="${ARCHS:-rpi:raspberry-pi armv7hf:raspberry-pi2,raspberrypi3 aarch64:raspberrypi3-64,raspberrypi4-64 i386 amd64}" DISTROS="${DISTROS:-debian:buster,latest alpine:3.12,latest}" set -x set -e for ARCH in `echo $ARCHS | xargs -n 1 echo | cut -d':' -f 1`; do for DISTRO in `echo $DISTROS | xargs -n 1 echo | cut -d':' -f 1`; do grep -v '^#' versions | while IFS=' ' read ELIXIR_VERSION ERLANG_MAJOR_VERSION; do ELIXIR_MAJOR_VERSION=`echo $ELIXIR_VERSION | awk -F\. '{print $1}'` ELIXIR_MAJOR_MINOR_VERSION=`echo $ELIXIR_VERSION | awk -F\. '{print $1 "." $2}'` ELIXIR_SHASUM=`grep "elixir-${ELIXIR_VERSION}.tar.gz" shasums | cut -d" " -f 1` for DISTRO_TAG in `echo $DISTROS | xargs -n 1 echo | grep "^$DISTRO" | cut -d':' -f 2 | tr "," "\n"`; do ARCH_CONTAINER="registry.gitlab.com/jimsy/balena-elixir/$ARCH-$DISTRO-build:${ELIXIR_VERSION}-${DISTRO_TAG}" docker pull $ARCH_CONTAINER || true docker build \ --cache-from $ARCH_CONTAINER \ --build-arg=ARCH=$ARCH \ --build-arg=DISTRO_TAG=$DISTRO_TAG \ --build-arg=ELIXIR_VERSION=$ELIXIR_VERSION \ --build-arg=ELIXIR_SHASUM=$ELIXIR_SHASUM \ --build-arg=ERLANG_MAJOR_VERSION=$ERLANG_MAJOR_VERSION \ -t $ARCH_CONTAINER \ -f $DISTRO/Dockerfile.arch-build \ $DISTRO docker push $ARCH_CONTAINER ARCH_CONTAINER_MAJOR_MINOR_VERSION="registry.gitlab.com/jimsy/balena-elixir/$ARCH-$DISTRO-build:${ELIXIR_MAJOR_MINOR_VERSION}-${DISTRO_TAG}" docker tag $ARCH_CONTAINER $ARCH_CONTAINER_MAJOR_MINOR_VERSION docker push $ARCH_CONTAINER_MAJOR_MINOR_VERSION ARCH_RUN_CONTAINER="registry.gitlab.com/jimsy/balena-elixir/$ARCH-$DISTRO:${ELIXIR_VERSION}-${DISTRO_TAG}" docker pull $ARCH_RUN_CONTAINER || true docker build \ --cache-from $ARCH_RUN_CONTAINER \ --build-arg=ARCH=$ARCH \ --build-arg=DISTRO_TAG=$DISTRO_TAG \ --build-arg=ELIXIR_VERSION=$ELIXIR_VERSION \ -t $ARCH_RUN_CONTAINER \ -f $DISTRO/Dockerfile.arch-run \ $DISTRO docker push $ARCH_RUN_CONTAINER ARCH_RUN_CONTAINER_MAJOR_MINOR_VERSION="registry.gitlab.com/jimsy/balena-elixir/$ARCH-$DISTRO:${ELIXIR_MAJOR_MINOR_VERSION}-${DISTRO_TAG}" docker tag $ARCH_RUN_CONTAINER $ARCH_RUN_CONTAINER_MAJOR_MINOR_VERSION docker push $ARCH_RUN_CONTAINER_MAJOR_MINOR_VERSION for PLATFORM in `echo $ARCHS | xargs -n 1 echo | grep "^$ARCH:" | cut -d':' -f 2 | tr "," "\n" | grep -v "^$ARCH$"`; do BUILD_CONTAINER="registry.gitlab.com/jimsy/balena-elixir/$PLATFORM-$DISTRO-build:${ELIXIR_VERSION}-${DISTRO_TAG}" docker pull $BUILD_CONTAINER || true docker build \ --cache-from $BUILD_CONTAINER \ --build-arg=ARCH=$ARCH \ --build-arg=DISTRO_TAG=$DISTRO_TAG \ --build-arg=PLATFORM=$PLATFORM \ --build-arg=ELIXIR_VERSION=$ELIXIR_VERSION \ -t $BUILD_CONTAINER \ -f $DISTRO/Dockerfile.build \ $DISTRO docker push $BUILD_CONTAINER BUILD_CONTAINER_MAJOR_MINOR_VERSION="registry.gitlab.com/jimsy/balena-elixir/$PLATFORM-$DISTRO-build:${ELIXIR_MAJOR_MINOR_VERSION}-${DISTRO_TAG}" docker tag $BUILD_CONTAINER $BUILD_CONTAINER_MAJOR_MINOR_VERSION docker push $BUILD_CONTAINER_MAJOR_MINOR_VERSION RUN_CONTAINER="registry.gitlab.com/jimsy/balena-elixir/$PLATFORM-$DISTRO:${ELIXIR_VERSION}-${DISTRO_TAG}" docker pull $RUN_CONTAINER || true docker build \ --cache-from $RUN_CONTAINER \ --build-arg=ARCH=$ARCH \ --build-arg=DISTRO_TAG=$DISTRO_TAG \ --build-arg=PLATFORM=$PLATFORM \ --build-arg=ELIXIR_VERSION=$ELIXIR_VERSION \ -t $RUN_CONTAINER \ -f $DISTRO/Dockerfile.run \ $DISTRO docker push $RUN_CONTAINER RUN_CONTAINER_MAJOR_MINOR_VERSION="registry.gitlab.com/jimsy/balena-elixir/$PLATFORM-$DISTRO:${ELIXIR_MAJOR_MINOR_VERSION}-${DISTRO_TAG}" docker tag $RUN_CONTAINER $RUN_CONTAINER_MAJOR_MINOR_VERSION docker push $RUN_CONTAINER_MAJOR_MINOR_VERSION done done done done done