85 lines
2.2 KiB
Bash
Executable File
85 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
. $(dirname $0)/util
|
|
|
|
: ${TARGETPLATFORM=}
|
|
: ${CONTINUOUS_INTEGRATION=}
|
|
|
|
set -ex
|
|
|
|
progressFlag=""
|
|
if [ "$CONTINUOUS_INTEGRATION" == "true" ]; then progressFlag="--progress=plain"; fi
|
|
|
|
binariesLegacy() {
|
|
mkdir -p bin
|
|
|
|
iidfile=$(mktemp -t docker-iidfile.XXXXXXXXXX)
|
|
copysrc="/usr/bin/."
|
|
|
|
case "$(echo "$TARGETPLATFORM" | cut -d"/" -f1)" in
|
|
"darwin")
|
|
docker build --iidfile $iidfile --target buildctl-darwin -f ./hack/dockerfiles/test.Dockerfile --force-rm .
|
|
copysrc="/out/."
|
|
;;
|
|
"windows")
|
|
docker build --iidfile $iidfile --build-arg BUILDKITD_TAGS="${BUILDKITD_TAGS}" --target buildctl.exe -f ./hack/dockerfiles/test.Dockerfile --force-rm .
|
|
copysrc="/out/."
|
|
;;
|
|
*)
|
|
docker build --iidfile $iidfile --build-arg BUILDKITD_TAGS="${BUILDKITD_TAGS}" --target buildkit-binaries -f ./hack/dockerfiles/test.Dockerfile --force-rm .
|
|
;;
|
|
esac
|
|
|
|
iid=$(cat $iidfile)
|
|
containerID=$(docker create $iid copy)
|
|
docker cp $containerID:$copysrc bin
|
|
docker rm $containerID
|
|
chmod +x bin/*
|
|
rm -f $iidfile
|
|
}
|
|
|
|
binariesDocker() {
|
|
mkdir -p bin/tmp
|
|
export DOCKER_BUILDKIT=1
|
|
iidfile=$(mktemp -t docker-iidfile.XXXXXXXXXX)
|
|
target=$(echo "$TARGETPLATFORM" | cut -d"/" -f1)
|
|
if [ -z "$target" ]; then
|
|
target="linux"
|
|
fi
|
|
|
|
docker build $platformFlag --build-arg BUILDKITD_TAGS="${BUILDKITD_TAGS}" --target binaries-$target --iidfile $iidfile -f ./hack/dockerfiles/test.buildkit.Dockerfile --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="--opt platform=$TARGETPLATFORM"
|
|
fi
|
|
buildctl build $progressFlag --frontend=dockerfile.v0 \
|
|
--local context=. --local dockerfile=. \
|
|
--opt filename=./hack/dockerfiles/test.buildkit.Dockerfile \
|
|
--opt build-arg:BUILDKITD_TAGS="$BUILDKITD_TAGS" \
|
|
--opt target=binaries $platformFlag \
|
|
--output type=local,dest=./bin/
|
|
}
|
|
|
|
case $buildmode in
|
|
"buildkit")
|
|
binaries
|
|
;;
|
|
"docker-buildkit")
|
|
binariesDocker
|
|
;;
|
|
*)
|
|
binariesLegacy
|
|
;;
|
|
esac
|