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) <noreply@anthropic.com>
This commit is contained in:
2026-09-01 11:52:26 +02:00
co-authored by Claude Opus 4.7
parent 54183fdc3a
commit e1f3231365
Executable
+39
View File
@@ -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 <version>" >&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)"