This change introduces logging of key environment variables used during the build process, with sensitive values partially masked for security. It also provides clear messaging on whether the build includes a push to the registry, improving transparency and debugging capabilities.
101 lines
3.8 KiB
Bash
101 lines
3.8 KiB
Bash
#!/bin/sh
|
||
# BusyBox/dash-friendly: no “pipefail”, no “[[ … ]]”, no “+=”
|
||
|
||
set -eu # BusyBox ash does not support “pipefail”
|
||
|
||
###############################################################################
|
||
# Mandatory variables – abort if not provided
|
||
###############################################################################
|
||
for var in KANIKO_CONTEXT GITHUB_REF_NAME GIT_USERNAME GIT_PASSWORD; do
|
||
eval [ -z \"\${$var:-}\" ] && {
|
||
echo "Error: $var environment variable is required but not set." >&2
|
||
exit 1
|
||
}
|
||
done
|
||
|
||
###############################################################################
|
||
# Optional / defaulted variables
|
||
###############################################################################
|
||
REGISTRY_HOST="${REGISTRY_HOST:-git.van-hemmen.com}"
|
||
REGISTRY_USER="${REGISTRY_USER:-}"
|
||
REGISTRY_PASS="${REGISTRY_PASS:-}"
|
||
|
||
KANIKO_DESTINATION="${KANIKO_DESTINATION:-}" # optional
|
||
KANIKO_VERBOSITY="${KANIKO_VERBOSITY:-info}"
|
||
KANIKO_DOCKERFILE="${KANIKO_DOCKERFILE:-./Dockerfile}"
|
||
|
||
###############################################################################
|
||
# Handle registry authentication (only if credentials are present)
|
||
###############################################################################
|
||
AUTH_ENABLED=false
|
||
if [ -n "${REGISTRY_USER}" ] && [ -n "${REGISTRY_PASS}" ]; then
|
||
echo "Registry credentials supplied – configuring authentication for ${REGISTRY_HOST}"
|
||
mkdir -p /kaniko/.docker
|
||
cat > /kaniko/.docker/config.json <<EOF
|
||
{
|
||
"auths": {
|
||
"${REGISTRY_HOST}": {
|
||
"username": "${REGISTRY_USER}",
|
||
"password": "${REGISTRY_PASS}"
|
||
}
|
||
}
|
||
}
|
||
EOF
|
||
AUTH_ENABLED=true
|
||
else
|
||
echo "Registry credentials not supplied – skipping authentication."
|
||
fi
|
||
|
||
###############################################################################
|
||
# Decide between --destination [...] or --no-push
|
||
###############################################################################
|
||
DEST_FLAGS=""
|
||
|
||
if $AUTH_ENABLED && [ -n "${KANIKO_DESTINATION## }" ]; then
|
||
echo "Building list of --destination flags"
|
||
old_ifs="$IFS"; IFS=','
|
||
for raw in $KANIKO_DESTINATION; do
|
||
raw=$(echo "$raw" | xargs) # trim
|
||
expanded=$(eval echo "$raw") # env-var expansion if any
|
||
[ -n "$expanded" ] && DEST_FLAGS="$DEST_FLAGS --destination=$expanded"
|
||
done
|
||
IFS="$old_ifs"
|
||
echo "Image(s) will be pushed to the registry."
|
||
else
|
||
DEST_FLAGS="--no-push"
|
||
$AUTH_ENABLED || echo "Registry credentials are missing – image(s) will not be pushed."
|
||
[ -n "${KANIKO_DESTINATION## }" ] || echo "KANIKO_DESTINATION not provided – using --no-push."
|
||
fi
|
||
|
||
echo "Kaniko will be called with:${DEST_FLAGS}"
|
||
|
||
###############################################################################
|
||
# resume what will be done
|
||
###############################################################################
|
||
echo "Environment Variables:"
|
||
echo "KANIKO_CONTEXT=${KANIKO_CONTEXT}"
|
||
echo "GITHUB_REF_NAME=${GITHUB_REF_NAME}"
|
||
echo "GIT_USERNAME=${GIT_USERNAME}"
|
||
echo "GIT_PASSWORD=$(echo "${GIT_PASSWORD}" | sed 's/\(^..\).*\(..$\)/\1...\2/')"
|
||
echo "REGISTRY_HOST=${REGISTRY_HOST}"
|
||
echo "REGISTRY_USER=${REGISTRY_USER}"
|
||
[ -n "${REGISTRY_PASS}" ] && echo "REGISTRY_PASS=$(echo "${REGISTRY_PASS}" | sed 's/\(^..\).*\(..$\)/\1...\2/')"
|
||
echo "KANIKO_DESTINATION=${KANIKO_DESTINATION}"
|
||
echo "KANIKO_VERBOSITY=${KANIKO_VERBOSITY}"
|
||
echo "KANIKO_DOCKERFILE=${KANIKO_DOCKERFILE}"
|
||
echo ""
|
||
if [ "${DEST_FLAGS}" = "--no-push" ]; then
|
||
echo "Action: Build only (no push)"
|
||
else
|
||
echo "Action: Build and push"
|
||
fi
|
||
echo ""
|
||
|
||
###############################################################################
|
||
# Invoke Kaniko
|
||
###############################################################################
|
||
exec /kaniko/executor \
|
||
--verbosity="${KANIKO_VERBOSITY}" \
|
||
--context="${KANIKO_CONTEXT}#${GITHUB_REF_NAME}" \
|
||
--dockerfile="${KANIKO_DOCKERFILE}" \
|
||
$DEST_FLAGS
|