#!/usr/bin/env bash # Publie une version d'OhmStreaming : # bump de version → commit + tag git → build de l'image Docker → push GHCR (public) + Gitea. # # Usage : ./scripts/release.sh 0.2.0 ["patchnote multi-lignes"] # Option : OHM_REGISTRY=git.lanro.eu/roman/ohm_streaming (défaut) pour viser un autre registre. set -euo pipefail VERSION="${1:?Usage : ./scripts/release.sh [patchnote] (ex : 0.2.0)}" REGISTRY="${OHM_REGISTRY:-git.lanro.eu/roman/ohm_streaming}" GHCR="${OHM_GHCR:-ghcr.io/aulyriusohm/ohm-streaming}" cd "$(dirname "$0")/.." [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || { echo "✖ « $VERSION » n'est pas un semver X.Y.Z"; exit 1; } if [[ -n "$(git status --porcelain)" ]]; then echo "✖ Dépôt sale — committez ou rangez vos modifications avant de publier :" git status --short exit 1 fi TAG="v$VERSION" if git rev-parse -q --verify "refs/tags/$TAG" >/dev/null; then echo "✖ Le tag $TAG existe déjà" exit 1 fi echo "▶ 1/3 Version $VERSION dans pyproject.toml" uv version "$VERSION" git add pyproject.toml uv.lock git commit -m "v$VERSION" echo "▶ 2/3 Tag et push git" git tag -a "$TAG" -m "${2:-$TAG}" git push origin HEAD git push origin "$TAG" echo "▶ 3/3 Image Docker → $GHCR (public) + $REGISTRY (Gitea)" docker build --build-arg VERSION="$VERSION" -t "$GHCR:$VERSION" -t "$GHCR:latest" . docker push "$GHCR:$VERSION" && docker push "$GHCR:latest" docker tag "$GHCR:$VERSION" "$REGISTRY:$VERSION" docker tag "$GHCR:latest" "$REGISTRY:latest" docker push "$REGISTRY:$VERSION" && docker push "$REGISTRY:latest" echo echo "✔ v$VERSION publiée ($GHCR:$VERSION et :latest — public, miroir Gitea $REGISTRY)" echo " Les instances la détecteront via Admin → Mise à jour → « Vérifier »."