#!/usr/bin/env bash . $(dirname $0)/util : ${TARGETPLATFORM=$CLI_PLATFORM} : ${CONTINUOUS_INTEGRATION=} set -ex progressFlag="" if [ "$CONTINUOUS_INTEGRATION" == "true" ]; then progressFlag="--progress=plain"; fi binariesDocker() { mkdir -p bin/tmp export DOCKER_BUILDKIT=1 iidfile=$(mktemp -t docker-iidfile.XXXXXXXXXX) platformFlag="" if [ -n "$TARGETPLATFORM" ]; then platformFlag="--build-arg=TARGETPLATFORM=$TARGETPLATFORM" fi docker build $platformFlag --target=binaries --iidfile $iidfile --force-rm . iid=$(cat $iidfile) containerID=$(docker create $iid copy) docker cp $containerID:/ bin/tmp mv bin/tmp/build* bin/ rm -rf bin/tmp docker rm $containerID docker rmi -f $iid rm -f $iidfile } binaries() { platformFlag="" if [ ! -z "$TARGETPLATFORM" ]; then platformFlag="--frontend-opt=platform=$TARGETPLATFORM" fi buildctl build $progressFlag --frontend=dockerfile.v0 \ --local context=. --local dockerfile=. \ --frontend-opt target=binaries $platformFlag \ --output type=local,dest=./bin/ } case $buildmode in "buildkit") binaries ;; "docker-buildkit") binariesDocker ;; *) echo "buildctl or docker with buildkit support is required" exit 1 ;; esac