#!/usr/bin/env bash # Deklarix — Release-Skript # # Verwendung: ./scripts/release.sh # Beispiel: ./scripts/release.sh 1.2.0 # # Was passiert: # 1. Tests laufen # 2. Build für amd64 + arm64 # 3. git tag v wird gesetzt # 4. git push origin main + git push origin v # # Voraussetzungen: # - Sauberer Git-Status (keine uncommitted changes) # - Alle Tests grün set -euo pipefail REPO_DIR="$(cd "$(dirname "$0")/.." && pwd)" VERSION="${1:-}" if [[ -z "$VERSION" ]]; then echo "Verwendung: $0 (z.B. 1.0.0)" exit 1 fi GRN='\033[0;32m'; BLD='\033[1m'; NC='\033[0m' log() { echo -e "${GRN}[release]${NC} $*"; } cd "$REPO_DIR" # Git-Status prüfen if [[ -n "$(git status --porcelain)" ]]; then echo "FEHLER: Uncommitted changes vorhanden — bitte erst committen" git status --short exit 1 fi log "Release v${VERSION} wird vorbereitet..." # Tests log "Tests laufen..." bash "$REPO_DIR/scripts/test.sh" # Build log "Build für alle Architekturen..." bash "$REPO_DIR/scripts/build.sh" "$VERSION" # Git Tag log "Tag v${VERSION} setzen..." git tag -a "v${VERSION}" -m "Release v${VERSION}" # Push log "Push main + Tag..." git push origin main git push origin "v${VERSION}" log "" log "Release v${VERSION} fertig ✓" log "Binaries: dist/deklarix_${VERSION}_amd64 + _arm64"