#!/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 [[ "${PLUGIN_NAME:-}" == "true" ]]; 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"