93 lines
4.2 KiB
Bash
Executable file
93 lines
4.2 KiB
Bash
Executable file
#!/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
|