From 9ad402876d78f504975bdf7c642dcaf9cf0d7b7e Mon Sep 17 00:00:00 2001 From: duffyduck Date: Sun, 25 Oct 2026 13:59:16 +0100 Subject: [PATCH] feat(release): Versionsnummer zaehlt automatisch hoch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ./release.sh und host-agent/release_agent.sh ohne Argument nehmen die hoechste Version aus Datei (package.json bzw. build.gradle) und letztem Git-Tag und zaehlen die letzte Stelle hoch (0.2.6.1 → 0.2.6.2). Mit Argument wie bisher. Vor dem Bauen: Anzeige alt → neu und Rueckfrage; existiert der Tag schon oder ist die Version ungueltig, bricht das Skript vorher ab. Co-Authored-By: Claude Opus 5.5 --- README.md | 7 ++++--- host-agent/README.md | 7 ++++--- host-agent/android/README.md | 2 +- host-agent/release_agent.sh | 27 +++++++++++++++++++++++++-- release.sh | 27 +++++++++++++++++++++++++-- 5 files changed, 59 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 63c07b4..a65af61 100644 --- a/README.md +++ b/README.md @@ -672,7 +672,8 @@ cd android ### Release auf Gitea veroeffentlichen ```bash -./release.sh 1.2.0 +./release.sh # Version automatisch +1 (0.2.6.1 → 0.2.6.2) +./release.sh 1.2.0 # oder Version selbst setzen ``` Das Script macht alles in einem Schritt: @@ -706,7 +707,7 @@ die VM voll laeuft: Die App prueft beim Start ob eine neuere Version auf dem RVS liegt. Der Update-Flow: -1. `./release.sh 0.0.3.0` → APK wird auf RVS kopiert (via scp) +1. `./release.sh` (Version automatisch +1) → APK wird auf RVS kopiert (via scp) 2. Alternativ: `git pull` auf dem RVS-Server → APK in `rvs/updates/` 3. App sendet `update_check` mit aktueller Version 4. RVS vergleicht → sendet `update_available` @@ -1238,7 +1239,7 @@ cd host-agent/android && ./build.sh # Docker (Android-SDK + Gradle) # -> dist/aria-android-agent.apk # Release mit allen Agent-Artefakten (Linux/Windows/Android) als Gitea-Assets: -cd host-agent && ./release_agent.sh 0.0.1.4 +cd host-agent && ./release_agent.sh # Version automatisch +1 ``` Der Signaturschluessel liegt fest in `host-agent/android/aria-agent.keystore` diff --git a/host-agent/README.md b/host-agent/README.md index 88c43c2..15f182c 100644 --- a/host-agent/README.md +++ b/host-agent/README.md @@ -142,12 +142,13 @@ Danach die `.env` unter `%ProgramData%\ARIA-Host-Agent\` mit RVS-Zugang + ## Release (Binaries als Gitea-Assets) -`release_agent.sh ` baut alles Docker-Baubare und hängt es als +`release_agent.sh [version]` baut alles Docker-Baubare und hängt es als **Release-Asset** an den Tag `agent-v` — nichts landet im Git-Tree: ```bash -./release_agent.sh 0.2.0 # Linux + Android + Windows (Wine) -SKIP_WINDOWS=1 ./release_agent.sh 0.2.0 # ohne Windows (schneller) +./release_agent.sh # Version automatisch +1 (0.0.1.6 → 0.0.1.7) +./release_agent.sh 0.2.0 # Version selbst setzen; Linux + Android + Windows (Wine) +SKIP_WINDOWS=1 ./release_agent.sh # ohne Windows (schneller) ``` Assets: `aria-host-agent-linux-x64`, `aria-host-agent-android-agent-v.apk`, diff --git a/host-agent/android/README.md b/host-agent/android/README.md index f2d9ea7..d07868d 100644 --- a/host-agent/android/README.md +++ b/host-agent/android/README.md @@ -246,7 +246,7 @@ es wird als **Release-Asset** an einen Tag gehaengt. Das macht `release_agent.sh ```bash cd host-agent -./release_agent.sh 0.2.0 +./release_agent.sh # Version automatisch +1 (oder: ./release_agent.sh 0.2.0) ``` Das Skript (wie die `release.sh` der Haupt-App, Version als Parameter): diff --git a/host-agent/release_agent.sh b/host-agent/release_agent.sh index 31e9451..403c94d 100755 --- a/host-agent/release_agent.sh +++ b/host-agent/release_agent.sh @@ -5,7 +5,8 @@ # Gitea-Release-Assets an einen Tag. NICHTS wandert in den Git-Tree — # Binaries leben nur unter "Releases" (blaeht clone/History nicht auf). # -# Verwendung: ./release_agent.sh (z.B. ./release_agent.sh 0.2.0) +# Verwendung: ./release_agent.sh (Version automatisch +1) +# ./release_agent.sh 0.1.0.0 (Version selbst setzen) # # Artefakte: # - Linux-x64-Binary (Docker, PyInstaller) -> immer @@ -31,8 +32,30 @@ ROOT_DIR="$(cd .. && pwd)" RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; CYAN='\033[0;36m'; NC='\033[0m' # ── Parameter ──────────────────────────────────────────────────────── -VERSION=${1:?"Usage: ./release_agent.sh (z.B. 0.2.0)"} +# Ohne Angabe: letzte Stelle automatisch hochzaehlen. Mit Angabe: genau diese. + +# Naechste Version: hoechste aus Datei-Version und letztem Git-Tag, letzte +# Stelle +1 (0.2.6.1 → 0.2.6.2). Aufruf: next_version +next_version() { + local cur="$1" prefix="$2" tagv best + tagv=$(git tag -l "${prefix}*" | sed "s/^${prefix}//" | grep -E '^[0-9]+(\.[0-9]+)+$' | sort -V | tail -1) + best=$(printf '%s\n%s\n' "$cur" "$tagv" | grep -E '^[0-9]+(\.[0-9]+)+$' | sort -V | tail -1) + [ -z "$best" ] && best="0.0.0.0" + awk -F. -v OFS=. '{ $NF = $NF + 1; print }' <<< "$best" +} + +CURRENT=$(grep -m1 "versionName" android/app/build.gradle | sed -E "s/.*versionName '([^']*)'.*/\1/") +VERSION=${1:-$(next_version "$CURRENT" "agent-v")} +if ! [[ "$VERSION" =~ ^[0-9]+(\.[0-9]+)+$ ]]; then + echo -e "${RED}Ungueltige Version: $VERSION (z.B. 0.0.1.7)${NC}"; exit 1 +fi TAG="agent-v$VERSION" +if git rev-parse "$TAG" &>/dev/null; then + echo -e "${RED}Tag $TAG gibt es schon — andere Version angeben.${NC}"; exit 1 +fi +echo -e "${CYAN}Agent-Version: $CURRENT → ${GREEN}$VERSION${NC}" +read -p "Release $VERSION bauen? [J/n] " OK +[[ "$OK" =~ ^[nN] ]] && { echo "Abgebrochen."; exit 0; } # ── Gitea-Konfiguration (env > host-agent/.env > Repo-Wurzel-.env) ──── [ -f "$SCRIPT_DIR/.env" ] && source "$SCRIPT_DIR/.env" diff --git a/release.sh b/release.sh index 0fbc930..4c90093 100755 --- a/release.sh +++ b/release.sh @@ -2,7 +2,8 @@ # ════════════════════════════════════════════════ # ARIA — Release Script # Baut APK, taggt, erstellt Gitea Release -# Verwendung: ./release.sh 1.2.0 +# Verwendung: ./release.sh (Version automatisch +1) +# ./release.sh 0.3.0.0 (Version selbst setzen) # Gitea-Kennwort wird interaktiv abgefragt. # ════════════════════════════════════════════════ @@ -16,8 +17,30 @@ CYAN='\033[0;36m' NC='\033[0m' # ── Parameter ───────────────────────────────── -VERSION=${1:?"Usage: ./release.sh (z.B. 1.2.0)"} +# Ohne Angabe: letzte Stelle automatisch hochzaehlen. Mit Angabe: genau diese. + +# Naechste Version: hoechste aus Datei-Version und letztem Git-Tag, letzte +# Stelle +1 (0.2.6.1 → 0.2.6.2). Aufruf: next_version +next_version() { + local cur="$1" prefix="$2" tagv best + tagv=$(git tag -l "${prefix}*" | sed "s/^${prefix}//" | grep -E '^[0-9]+(\.[0-9]+)+$' | sort -V | tail -1) + best=$(printf '%s\n%s\n' "$cur" "$tagv" | grep -E '^[0-9]+(\.[0-9]+)+$' | sort -V | tail -1) + [ -z "$best" ] && best="0.0.0.0" + awk -F. -v OFS=. '{ $NF = $NF + 1; print }' <<< "$best" +} + +CURRENT=$(grep -m1 '"version"' android/package.json | sed -E 's/.*"version": *"([^"]*)".*/\1/') +VERSION=${1:-$(next_version "$CURRENT" "v")} +if ! [[ "$VERSION" =~ ^[0-9]+(\.[0-9]+)+$ ]]; then + echo -e "${RED}Ungueltige Version: $VERSION (z.B. 0.2.6.2)${NC}"; exit 1 +fi TAG="v$VERSION" +if git rev-parse "$TAG" &>/dev/null; then + echo -e "${RED}Tag $TAG gibt es schon — andere Version angeben.${NC}"; exit 1 +fi +echo -e "${CYAN}App-Version: $CURRENT → ${GREEN}$VERSION${NC}" +read -p "Release $VERSION bauen? [J/n] " OK +[[ "$OK" =~ ^[nN] ]] && { echo "Abgebrochen."; exit 0; } # ── Gitea-Konfiguration ────────────────────── # Aus .env lesen falls vorhanden (GITEA_URL, GITEA_REPO, GITEA_USER)