- 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>
41 lines
1.4 KiB
Bash
Executable File
41 lines
1.4 KiB
Bash
Executable File
#!/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})"
|