#!/bin/bash set -euo pipefail IFS=$'\n\t ' ### LOGIN if [[ -n "$REGISTRY" && -n "$USERNAME" && -n "$PASSWORD" ]]; then buildah login --storage-driver=overlay2 $REGISTRY -u $USERNAME -p $PASSWORD fi generate_args() { local input_args="$1" local prefix="$2" local output="" if [ -n "$input_args" ]; then output="$(echo "$input_args" | tr -s '+' ' ' | sed "s/[^ ]* */$prefix &/g")" fi echo "$output" } ### BUILD if [[ -n "$DOCKERFILE" ]]; then CREATED="$(date '+%Y-%m-%dT%T')" REVISION="$REVISION" SOURCE="$SOURCE" echo "Main labels: $CREATED $REVISION $SOURCE" TAGS=$(generate_args "$ACTION_TAGS" "-t") echo "Tags: $TAGS" LABELS=$(generate_args "$ACTION_LABELS" "--label") echo "Labels: $LABELS" BUILD_ARGS=$(generate_args "$ACTION_BUILD_ARGS" "--build-arg") echo "Build args: $BUILD_ARGS" EXTRA_ARGS=$(generate_args "$ACTION_EXTRA_ARGS" "") echo "Extra args: $EXTRA_ARGS" buildah bud --platform="linux/amd64" \ --storage-driver=overlay2 \ --layers \ --pull=true \ --label image.created="$CREATED" \ --label image.revision="$REVISION" \ --label image.source="$SOURCE" \ $TAGS \ $LABELS \ $BUILD_ARGS \ $EXTRA_ARGS \ -f "$DOCKERFILE" \ . fi if [[ -n "$PUSH" && "$PUSH" == "true" ]]; then TAGS=$(generate_args "$ACTION_TAGS" "") echo "Tags: $TAGS" buildah push --storage-driver=overlay2 $TAGS fi