From e1f3231365932da84e2fda6c1e2f18a9ca6da709 Mon Sep 17 00:00:00 2001 From: duffyduck Date: Tue, 1 Sep 2026 11:52:26 +0200 Subject: [PATCH] add release.sh: build + tag both version and latest, then push Takes a version (e.g. 2.1), validates its format, runs docker build once with both tags to skip a second build pass, then pushes both. Warns on uncommitted changes but doesn't block. Co-Authored-By: Claude Opus 4.7 (1M context) --- release.sh | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100755 release.sh diff --git a/release.sh b/release.sh new file mode 100755 index 0000000..d074c44 --- /dev/null +++ b/release.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash +set -euo pipefail +docker login docker-repo.hacker-net.de +IMAGE="docker-repo.hacker-net.de/imap-mailfilter" + +if [[ $# -ne 1 ]]; then + echo "Usage: $0 " >&2 + echo "Beispiel: $0 2.1" >&2 + exit 1 +fi + +VERSION="$1" + +if [[ ! "$VERSION" =~ ^[0-9]+(\.[0-9]+)*$ ]]; then + echo "Fehler: Version '$VERSION' hat kein gültiges Format (z.B. 2.1 oder 2.1.0)" >&2 + exit 1 +fi + +# Warnung bei uncommitteten Änderungen (kein Abbruch) +if [[ -d .git ]] && ! git diff-index --quiet HEAD -- 2>/dev/null; then + echo "Warnung: uncommittete Änderungen im Repo. Baue trotzdem." >&2 + git status --short >&2 + echo >&2 +fi + +echo "==> Baue $IMAGE:$VERSION und :latest" +docker build \ + -t "$IMAGE:$VERSION" \ + -t "$IMAGE:latest" \ + . + +echo "==> Pushe $IMAGE:$VERSION" +docker push "$IMAGE:$VERSION" + +echo "==> Pushe $IMAGE:latest" +docker push "$IMAGE:latest" + +echo +echo "Release fertig: $IMAGE:$VERSION (und :latest)"