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

87 lines
3.1 KiB
Bash
Raw Normal View History

2019-11-30 08:37:46 +13:00
#!/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