#!/usr/bin/env bash # Release-Pipeline: Version bumpen, signiertes Bundle bauen, latest.json generieren. # # Usage: ./scripts/release.sh # Example: ./scripts/release.sh 0.2.0 # # Vorausgesetzt: # - Signing-Key in ~/.rapport-signing/server-app.key (chmod 600) # - tauri.conf.json hat den passenden Pubkey unter plugins.updater.pubkey # - Docker-Daemon laeuft (fuer eventuelle Builds), Node + Rust installiert # # Output: # - Signiertes Bundle in src-tauri/target/release/bundle/ # - latest.json im Repo-Root # - Commit-Hinweise in der Konsole set -euo pipefail cd "$(dirname "$0")/.." if [[ $# -ne 1 ]]; then echo "Usage: $0 " echo "Example: $0 0.2.0" exit 1 fi VERSION="$1" KEY_PATH="${TAURI_SIGNING_PRIVATE_KEY_PATH:-$HOME/.rapport-signing/server-app.key}" if [[ ! -f "$KEY_PATH" ]]; then echo "Signing-Key nicht gefunden: $KEY_PATH" >&2 echo "Generate via: tauri signer generate -w $KEY_PATH" >&2 exit 1 fi # --- 1. Version in allen Manifesten bumpen --------------------------------- echo "==> Bumpe Version auf $VERSION" # package.json: leeres "version"-Feld auch behandeln python3 - < Build + Sign" # tauri-bundler liest fuer den Updater-Tarball ausschliesslich TAURI_SIGNING_PRIVATE_KEY # (Content), nicht _PATH. Wir injecten den File-Inhalt direkt. export TAURI_SIGNING_PRIVATE_KEY="$(cat "$KEY_PATH")" export TAURI_SIGNING_PRIVATE_KEY_PASSWORD="" npm install --silent npm run tauri:build # --- 3. Artefakte finden --------------------------------------------------- BUNDLE_DIR="src-tauri/target/release/bundle" DMG=$(find "$BUNDLE_DIR/dmg" -name "*.dmg" 2>/dev/null | head -n 1 || true) TARBALL=$(find "$BUNDLE_DIR/macos" -name "*.tar.gz" 2>/dev/null | head -n 1 || true) SIG=$(find "$BUNDLE_DIR/macos" -name "*.tar.gz.sig" 2>/dev/null | head -n 1 || true) if [[ -z "$TARBALL" || -z "$SIG" ]]; then echo "Updater-Tarball oder Signatur nicht gefunden!" >&2 echo "Erwartet unter: $BUNDLE_DIR/macos/*.tar.gz(.sig)" >&2 echo "Bundle-Output:" >&2 ls -la "$BUNDLE_DIR" 2>&1 >&2 || true exit 1 fi SIGNATURE=$(cat "$SIG") PUB_DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ) DOWNLOAD_URL="https://git.kgva.ch/karim/RAPPORT-SERVER-APP/releases/download/v${VERSION}/$(basename "$TARBALL")" # --- 4. latest.json generieren -------------------------------------------- cat > latest.json <