64 lines
No EOL
1.5 KiB
Bash
Executable file
64 lines
No EOL
1.5 KiB
Bash
Executable file
#!/bin/bash
|
|
set -euo pipefail
|
|
IFS=$'\n\t'
|
|
|
|
REGISTRY=${REGISTRY:-}
|
|
USERNAME=${USERNAME:-}
|
|
PASSWORD=${PASSWORD:-}
|
|
DOCKERFILE=${DOCKERFILE:-}
|
|
PUSH=${PUSH:-}
|
|
|
|
### LOGIN
|
|
if [[ -n "$REGISTRY" && -n "$USERNAME" && -n "$PASSWORD" ]]; then
|
|
podman login --storage-driver=overlay "$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 ' ' '\n' | 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"
|
|
|
|
podman build --platform="linux/amd64" \
|
|
--storage-driver=overlay \
|
|
--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"
|
|
|
|
podman push --storage-driver=overlay $TAGS
|
|
fi |