74 lines
1.5 KiB
Bash
Executable File
74 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -Eeuo pipefail
|
|
|
|
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
REGISTRY="${GITEA_REGISTRY:-${1:-}}"
|
|
IMAGE_PATH="${GITEA_IMAGE_PATH:-${2:-}}"
|
|
TAG="${IMAGE_TAG:-${3:-latest}}"
|
|
SECOND_TAG="${4:-}"
|
|
PLATFORM="${PLATFORM:-linux/amd64}"
|
|
|
|
if [[ -z "${REGISTRY}" || -z "${IMAGE_PATH}" ]]; then
|
|
cat <<'EOF'
|
|
Verwendung:
|
|
./build-and-push-gitea.sh <registry> <owner/image> [tag] [zweiter-tag]
|
|
|
|
Beispiel:
|
|
./build-and-push-gitea.sh git.d-razz.de michael/fixfin V3.3 latest
|
|
|
|
Einmalige Registry-Anmeldung:
|
|
docker login git.d-razz.de -u michael
|
|
EOF
|
|
exit 1
|
|
fi
|
|
|
|
command -v docker >/dev/null 2>&1 || {
|
|
echo "FEHLER: Docker fehlt."
|
|
exit 1
|
|
}
|
|
|
|
docker info >/dev/null 2>&1 || {
|
|
echo "FEHLER: Docker ist für den aktuellen Benutzer nicht erreichbar."
|
|
echo "Teste: docker ps"
|
|
exit 1
|
|
}
|
|
|
|
docker buildx version >/dev/null 2>&1 || {
|
|
echo "FEHLER: Docker Buildx fehlt."
|
|
exit 1
|
|
}
|
|
|
|
FULL_IMAGE="${REGISTRY}/${IMAGE_PATH}:${TAG}"
|
|
|
|
BUILD_ARGS=(
|
|
--platform "${PLATFORM}"
|
|
--tag "${FULL_IMAGE}"
|
|
)
|
|
|
|
if [[ -n "${SECOND_TAG}" ]]; then
|
|
BUILD_ARGS+=(--tag "${REGISTRY}/${IMAGE_PATH}:${SECOND_TAG}")
|
|
fi
|
|
|
|
BUILD_ARGS+=(--push .)
|
|
|
|
echo
|
|
echo ">>> Build + Push"
|
|
echo "Image: ${FULL_IMAGE}"
|
|
if [[ -n "${SECOND_TAG}" ]]; then
|
|
echo "Zusatz: ${REGISTRY}/${IMAGE_PATH}:${SECOND_TAG}"
|
|
fi
|
|
echo "Platform: ${PLATFORM}"
|
|
echo
|
|
|
|
cd "${ROOT}"
|
|
|
|
docker buildx build "${BUILD_ARGS[@]}"
|
|
|
|
echo
|
|
echo "Fertig:"
|
|
echo " ${FULL_IMAGE}"
|
|
if [[ -n "${SECOND_TAG}" ]]; then
|
|
echo " ${REGISTRY}/${IMAGE_PATH}:${SECOND_TAG}"
|
|
fi
|