#!/bin/bash # exit immediately on non-zero return code, including during a pipe stage or on # accessing an uninitialized variable and print commands before executing them set -euxo pipefail EVENT=$1 EDGE=false [ "$2" = edge ] && EDGE=true build_image() { local PUSH PUSH=$1 shift 1 docker buildx build \ --platform linux/amd64,linux/386,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le \ --output type=image,push="$PUSH" \ --pull \ --no-cache \ --progress plain \ $@ \ . } docker_login() { printenv DOCKER_PASSWORD | docker login \ --username "$DOCKER_USERNAME" \ --password-stdin } image_build_arguments() { cat< Dockerfile.edge fi image_build_arguments | while read -r IMAGE BUILD_ARGS ; do if [ "$EDGE" = false ] ; then build_image $PUSH --tag "$IMAGE:latest" --tag "$IMAGE:$TAG" --tag "${IMAGE}:${TAG%%-*}" "$BUILD_ARGS" else build_image $PUSH -f Dockerfile.edge --tag "$IMAGE:edge" "$BUILD_ARGS" fi done rm -f Dockerfile.edge "$HOME/.docker/config.json" } [ "$(basename "$0")" = 'buildx.sh' ] && main