You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.2 KiB
Plaintext
57 lines
1.2 KiB
Plaintext
6 years ago
|
#!/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
|