#!/usr/bin/env bash # Deklarix — Build-Skript (amd64 + arm64) # # Verwendung: # ./scripts/build.sh [version] # Beide Architekturen # ./scripts/build.sh [version] amd64 # Nur amd64 # ./scripts/build.sh [version] arm64 # Nur arm64 # # Ausgabe: dist/deklarix__ # # Release-Prozess: # 1. VERSION erhöhen (Semantic Versioning: MAJOR.MINOR.PATCH) # 2. ./scripts/build.sh # 3. ./scripts/test.sh # 4. git tag v && git push origin v set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" REPO_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" VERSION="${1:-0.0.1}" ARCH_FILTER="${2:-both}" GRN='\033[0;32m'; BLD='\033[1m'; NC='\033[0m' log() { echo -e "${GRN}[build]${NC} $*"; } export PATH=$PATH:/usr/local/go/bin command -v go >/dev/null || { echo "Go nicht gefunden — PATH: $PATH"; exit 1; } mkdir -p "$REPO_DIR/dist" log "Version: $VERSION | Go: $(go version)" ARCHS=() case "$ARCH_FILTER" in amd64) ARCHS=("amd64") ;; arm64) ARCHS=("arm64") ;; *) ARCHS=("amd64" "arm64") ;; esac for ARCH in "${ARCHS[@]}"; do OUT="$REPO_DIR/dist/deklarix_${VERSION}_${ARCH}" log "Baue $ARCH → $OUT" GOARCH=$ARCH GOOS=linux go build \ -ldflags="-X main.Version=${VERSION} -s -w" \ -o "$OUT" \ ./cmd/server/ log "$ARCH fertig: $(du -sh "$OUT" | cut -f1)" done log "Build abgeschlossen ✓"