Matches the project structure and binary name defined in the Deklarix product spec. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
53 lines
1.4 KiB
Bash
Executable File
53 lines
1.4 KiB
Bash
Executable File
#!/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_<version>_<arch>
|
|
#
|
|
# Release-Prozess:
|
|
# 1. VERSION erhöhen (Semantic Versioning: MAJOR.MINOR.PATCH)
|
|
# 2. ./scripts/build.sh <version>
|
|
# 3. ./scripts/test.sh
|
|
# 4. git tag v<version> && git push origin v<version>
|
|
|
|
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/deklarix/
|
|
log "$ARCH fertig: $(du -sh "$OUT" | cut -f1)"
|
|
done
|
|
|
|
log "Build abgeschlossen ✓"
|