This repository has been archived on 2024-02-13. You can view files and clone it, but cannot push or open issues or pull requests.
balena-elixir/build.sh

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