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
|
2020-02-26 10:53:15 +13:00
|
|
|
if (uname -m | grep 'x86_64\|i386')
|
|
|
|
then
|
|
|
|
CROSS_BUILD_START='RUN [ "cross-build-start" ]'
|
|
|
|
CROSS_BUILD_END='RUN [ "cross-build-end" ]'
|
|
|
|
else
|
|
|
|
CROSS_BUILD_START=''
|
|
|
|
CROSS_BUILD_END=''
|
|
|
|
fi
|
2019-11-30 08:37:46 +13:00
|
|
|
else
|
|
|
|
CROSS_BUILD_START=''
|
|
|
|
CROSS_BUILD_END=''
|
|
|
|
fi
|
|
|
|
|
|
|
|
docker pull $BASE_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
|
|
|
|
|
2020-02-26 10:53:15 +13:00
|
|
|
docker pull $ERLANG_CONTAINER:$ERLANG_MAJOR_VERSION-$TAG || true
|
|
|
|
docker pull $CONTAINER_NAME-build-$ELIXIR_VERSION-$TAG || true
|
|
|
|
docker pull $CONTAINER_NAME-build-$ELIXIR_MAJOR_VERSION-$TAG || true
|
|
|
|
docker pull $CONTAINER_NAME-$ELIXIR_VERSION-$TAG || true
|
|
|
|
docker pull $CONTAINER_NAME-$ELIXIR_MAJOR_VERSION-$TAG || true
|
|
|
|
|
|
|
|
|
2019-11-30 08:37:46 +13:00
|
|
|
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
|