feat: badge versione build in GUI + build.sh con auto-bump

- VERSION (1.0.0) + build.sh: bump patch/minor/major e deploy via docker compose
- Dockerfile: ARG/ENV APP_VERSION + BUILD_TIME (iniettati come build-arg)
- version.build_info(): env in Docker, fallback file VERSION + '(local)' in dev
- GET /api/version; badge #appVersionPill nell'header (tooltip = build time)
- test_version.py: env vs fallback

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
AdrianoandClaude Opus 4.8 committed 2026-06-03 14:40:52 +02:00
1 parent a88a064aa8
commit cf726b479e
8 files changed
+126 -1

No files matched your search

Executable
+40
View File
@@ -0,0 +1,40 @@
#!/usr/bin/env bash
# Build + deploy di presa-mano con auto-bump della versione.
#
# ./build.sh → patch++ (1.0.1 -> 1.0.2)
# ./build.sh minor → minor++ (1.0.2 -> 1.1.0)
# ./build.sh major → major++ (1.1.0 -> 2.0.0)
#
# La nuova versione + l'ora di build vengono iniettate nell'immagine come
# build-arg e mostrate nel badge in GUI. Il file VERSION viene riscritto ma NON
# committato automaticamente (lo committi tu con le altre modifiche).
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
COMPOSE_DIR="$(dirname "$SCRIPT_DIR")" # docker-compose.yml sta un livello sopra
VERSION_FILE="$SCRIPT_DIR/VERSION"
[ -f "$VERSION_FILE" ] || echo "1.0.0" > "$VERSION_FILE"
cur="$(tr -d '[:space:]' < "$VERSION_FILE")"
IFS='.' read -r major minor patch <<< "$cur"
major="${major:-1}"; minor="${minor:-0}"; patch="${patch:-0}"
case "${1:-patch}" in
major) major=$((major + 1)); minor=0; patch=0 ;;
minor) minor=$((minor + 1)); patch=0 ;;
patch) patch=$((patch + 1)) ;;
*) echo "uso: $0 [major|minor|patch]" >&2; exit 1 ;;
esac
new="${major}.${minor}.${patch}"
echo "$new" > "$VERSION_FILE"
build_time="$(date -u +"%Y-%m-%d %H:%M UTC")"
echo "→ build V${new} (${build_time})"
cd "$COMPOSE_DIR"
docker compose build \
--build-arg APP_VERSION="$new" \
--build-arg BUILD_TIME="$build_time" \
presa-mano
docker compose up -d presa-mano
echo "✓ deployed V${new} (${build_time})"