buildctl/entrypoint.sh
Stephan Schnabel 29e08b6779
Some checks failed
ci/woodpecker/push/lint Pipeline failed
ci/woodpecker/push/build Pipeline was successful
ci/woodpecker/push/test/2 Pipeline failed
ci/woodpecker/push/test/1 Pipeline failed
asfd
2025-06-07 20:37:58 +02:00

67 lines
2 KiB
Bash
Executable file

#!/usr/bin/env bash
set -exu;
env | sort | grep -v DRONE
echo $PLUGIN_ARCH | base64 -w0
##
## check input
##
BUILDCTL_CONTEXT=${PLUGIN_CONTEXT:-$(pwd)}
BUILDCTL_DOCKERFILE=$(dirname "${PLUGIN_DOCKERFILE:-$BUILDCTL_CONTEXT/Dockerfile}")
if [[ ! -f $BUILDCTL_DOCKERFILE/Dockerfile ]]; then
echo "Dockerfile $BUILDCTL_DOCKERFILE/Dockerfile not found!"
exit 1
fi
BUILDCTL_FRONTEND=${PLUGIN_FRONTEND:-dockerfile.v0}
if [[ "$BUILDCTL_FRONTEND" != "dockerfile.v0" ]]; then
echo "Only frontend 'dockerfile.v0' testet and supported yet."
exit 1
fi
SOURCE_DATE_EPOCH=${PLUGIN_SOURCE_DATE_EPOCH:-0}
##
## build command
##
COMMAND="buildctl"
COMMAND="$COMMAND build"
if [[ -n "${PLUGIN_ADDR:-}" ]]; then
COMMAND="$COMMAND --addr $PLUGIN_ADDR"
fi
COMMAND="$COMMAND --frontend $BUILDCTL_FRONTEND"
COMMAND="$COMMAND --local context='$BUILDCTL_CONTEXT'"
COMMAND="$COMMAND --local dockerfile='$BUILDCTL_DOCKERFILE'"
if [[ "${PLUGIN_PLATFORM:-}" == "true" ]]; then
COMMAND="$COMMAND --opt platform='$PLUGIN_PLATFORM'"
fi
# https://github.com/moby/buildkit/blob/master/README.md#output
OUTPUT=""
if [[ -n "${PLUGIN_NAME:-}" ]]; then
OUTPUT="$OUTPUT --output type=image,\"name=$PLUGIN_NAME\",push=${PLUGIN_PUSH:-true},oci-mediatypes=true,oci-artifact=true,compression=estargz"
OUTPUT="$OUTPUT,oci-mediatypes=true,oci-artifact=true,compression=estargz,compression-level=9"
OUTPUT="$OUTPUT,rewrite-timestamp=true"
export IFS=";"
for PLUGIN_ANNOTATION_ITEM in "${PLUGIN_ANNOTATION:-}"; do
OUTPUT="$OUTPUT,annotation.$PLUGIN_ANNOTATION_ITEM"
done
fi
COMMAND="$COMMAND $OUTPUT"
# custom args, e.g. docker run --rm --volume=$HOME:HOME:ro --workdir=$PWD kokuwaio/buildkit --opt buildarg=foo=bar
if [[ -n "${1:-}" ]]; then
COMMAND="$COMMAND $*"
fi
##
## execute command
##
echo "SOURCE_DATE_EPOCH=$SOURCE_DATE_EPOCH docker buildx build ${PLUGIN_CONTEXT:-.}"
if [[ "${PLUGIN_PLATFORM:-}" == "true" ]]; then
echo " --platform='$PLUGIN_PLATFORM'"
echo " $OUTPUT"
fi
echo -e "SOURCE_DATE_EPOCH=$SOURCE_DATE_EPOCH ${COMMAND// --/\\n --}\n"
eval "$COMMAND"
echo 1