#!/usr/bin/env bash TAG=$1 MIGRATIONS=$2 function require() { if [ "$1" = "" ]; then echo "input '$2' required" print_help exit 1 fi } function print_help() { echo "build.sh" echo "" echo "Usage:" echo " build.sh [tag] [migrations]" echo "" echo "Args:" echo " tag: The git tag to create and publish" echo " migrations: (optional) Whether to build the migrations container as well" } function build_image() { repo=$1 tag=$2 arch=$3 docker build \ --pull \ --build-arg TAG="${tag}" \ -f "Dockerfile.${arch}" \ -t "${repo}:${tag}-${arch}" \ -t "${repo}:latest-${arch}" \ . docker push "${repo}:${tag}-${arch}" docker push "${repo}:latest-${arch}" } require "$TAG" "tag" if ! docker run --rm -it arm64v8/ubuntu:19.10 /bin/bash -c 'echo "docker is configured correctly"'; then echo "docker is not configured to run on qemu-emulated architectures, fixing will require sudo" sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes fi set -xe git checkout main git commit -m "Version $TAG" || true git tag $TAG git push origin $TAG git push build_image "asonix/relay" "$TAG" "arm64v8" build_image "asonix/relay" "$TAG" "arm32v7" build_image "asonix/relay" "$TAG" "amd64" ./manifest.sh "asonix/relay" "$TAG" ./manifest.sh "asonix/relay" "latest" if [ "${MIGRATIONS}" = "migrations" ]; then build_image "asonix/relay-migrations" "$TAG" arm64v8 build_image "asonix/relay-migrations" "$TAG" arm32v7 build_image "asonix/relay-migrations" "$TAG" amd64 ./manifest.sh "asonix/relay-migrations" "$TAG" ./manifest.sh "asonix/relay-migrations" "latest" fi