1
This commit is contained in:
parent
f9eff77790
commit
01b16c2e42
12 changed files with 209 additions and 132 deletions
|
@ -1,46 +1,58 @@
|
|||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
set -eu;
|
||||
|
||||
##
|
||||
## check input
|
||||
##
|
||||
|
||||
BUILDCTL_ADDR=${PLUGIN_ADDR:-${BUILDCTL_ADDR:-}}
|
||||
if [[ -z "${BUILDCTL_ADDR:-}" ]]; then
|
||||
echo "Missing buildkit addr."
|
||||
exit 1
|
||||
fi
|
||||
BUILDCTL_CONTEXT=${PLUGIN_CONTEXT:-$(pwd)}
|
||||
BUILDCTL_DOCKERFILE=$(dirname ${PLUGIN_DOCKERFILE:-$BUILDCTL_CONTEXT/Dockerfile})
|
||||
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}
|
||||
|
||||
if [[ -n "${PLUGIN_AUTH:-}" ]]; then
|
||||
echo "$PLUGIN_AUTH" | jq -r 'to_entries|map({(.key):{"auth":(.value.username+":"+.value.password)|@base64}})|add|{"auths":.}' > "$HOME/.docker/config.json"
|
||||
echo "Stored credentials at $HOME/.docker/config.json"
|
||||
echo
|
||||
fi
|
||||
|
||||
##
|
||||
## build command
|
||||
##
|
||||
|
||||
COMMAND="buildctl"
|
||||
COMMAND="$COMMAND --addr $BUILDCTL_ADDR"
|
||||
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
|
||||
if [[ ! -z "${PLUGIN_NAME:-}" ]]; then
|
||||
COMMAND="$COMMAND --output type=image,name=$PLUGIN_NAME,push=${PLUGIN_PUSH:-true}"
|
||||
fi
|
||||
|
||||
# custom args, e.g. docker run --rm --volume=$(pwd):$(pwd) --workdir=$(pwd) --env=CI=test kokuwaio/buildkit --opt buildarg=foo=bar
|
||||
# https://github.com/moby/buildkit/blob/master/README.md#output
|
||||
OUTPUT=""
|
||||
if [[ -n "${PLUGIN_NAME:-}" ]]; then
|
||||
OUTPUT="--output type=image,\"name=$PLUGIN_NAME\",push=${PLUGIN_PUSH:-true}"
|
||||
OUTPUT="$OUTPUT,oci-mediatypes=true,oci-artifact=true,compression=estargz,compression-level=9"
|
||||
OUTPUT="$OUTPUT,rewrite-timestamp=true"
|
||||
OUTPUT="$OUTPUT$(echo "$PLUGIN_ANNOTATION" | jq --join-output 'keys[] as $k|",annotation.\($k)=\"\(.[$k])\""')"
|
||||
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
|
||||
|
@ -49,5 +61,21 @@ fi
|
|||
## execute command
|
||||
##
|
||||
|
||||
echo -e "${COMMAND// --/\\n --}\n"
|
||||
echo
|
||||
echo Reproduce with docker:
|
||||
echo
|
||||
echo "SOURCE_DATE_EPOCH=$SOURCE_DATE_EPOCH docker buildx build ${PLUGIN_CONTEXT:-.}"
|
||||
echo " --no-cache"
|
||||
if [[ "${PLUGIN_PLATFORM:-}" == "true" ]]; then
|
||||
echo " --platform='$PLUGIN_PLATFORM'"
|
||||
fi
|
||||
if [[ -n "${OUTPUT:-}" ]]; then
|
||||
echo " $OUTPUT"
|
||||
fi
|
||||
echo
|
||||
echo Running now:
|
||||
echo
|
||||
echo -e "SOURCE_DATE_EPOCH=$SOURCE_DATE_EPOCH ${COMMAND// --/\\n --}"
|
||||
echo
|
||||
|
||||
eval "$COMMAND"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue