clavitor/clavis/clavis-vault/scripts/release.sh

75 lines
2.6 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
cd "$(dirname "$0")/.."
GO="${GO:-/usr/local/go/bin/go}"
MAC_HOST="${MAC_HOST:-johanjongsma@192.168.1.14}"
MAC_PROJECT="${MAC_PROJECT:-~/dev/clavitor/clavis/clavis-vault}"
OUT="dist"
VERSION=$(git describe --tags --always --dirty 2>/dev/null || echo dev)
COMMIT=$(git rev-parse --short HEAD 2>/dev/null || echo unknown)
DATE=$(date -u +%Y%m%d-%H%M)
LDFLAGS="-s -w -X main.version=${VERSION} -X main.commit=${COMMIT} -X main.buildDate=${DATE}"
mkdir -p "$OUT"
echo "=== Clavitor release build ==="
echo " version: ${VERSION} (${COMMIT}) ${DATE}"
echo ""
# --- Linux amd64 (native) ---
echo "[1/4] linux/amd64 ..."
CGO_ENABLED=1 GOOS=linux GOARCH=amd64 GOFIPS140=latest \
$GO build -ldflags "$LDFLAGS" -o "${OUT}/clavitor-linux-amd64" ./cmd/clavitor
echo " done"
# --- Linux arm64 (cross) ---
echo "[2/4] linux/arm64 ..."
if ! command -v aarch64-linux-gnu-gcc &>/dev/null; then
echo " aarch64-linux-gnu-gcc not found."
echo " Install with: sudo apt install gcc-aarch64-linux-gnu"
echo " SKIPPED"
else
CGO_ENABLED=1 GOOS=linux GOARCH=arm64 CC=aarch64-linux-gnu-gcc GOFIPS140=latest \
$GO build -ldflags "$LDFLAGS" -o "${OUT}/clavitor-linux-arm64" ./cmd/clavitor
echo " done"
fi
# --- Darwin arm64 + amd64 (via SSH to Mac) ---
echo "[3/4] darwin/arm64 (via Mac SSH) ..."
echo "[4/4] darwin/amd64 (via Mac SSH) ..."
if ssh -o ConnectTimeout=5 -o BatchMode=yes "$MAC_HOST" true 2>/dev/null; then
ssh "$MAC_HOST" bash -s <<REMOTE
set -euo pipefail
cd "${MAC_PROJECT}"
git pull --ff-only 2>/dev/null || true
VERSION=\$(git describe --tags --always --dirty 2>/dev/null || echo dev)
COMMIT=\$(git rev-parse --short HEAD 2>/dev/null || echo unknown)
DATE=\$(date -u +%Y%m%d-%H%M)
LDFLAGS="-s -w -X main.version=\${VERSION} -X main.commit=\${COMMIT} -X main.buildDate=\${DATE}"
CGO_ENABLED=1 GOOS=darwin GOARCH=arm64 \
go build -ldflags "\$LDFLAGS" -o /tmp/clavitor-darwin-arm64 ./cmd/clavitor
CGO_ENABLED=1 GOOS=darwin GOARCH=amd64 \
go build -ldflags "\$LDFLAGS" -o /tmp/clavitor-darwin-amd64 ./cmd/clavitor
REMOTE
scp "$MAC_HOST":/tmp/clavitor-darwin-arm64 "${OUT}/clavitor-darwin-arm64"
scp "$MAC_HOST":/tmp/clavitor-darwin-amd64 "${OUT}/clavitor-darwin-amd64"
echo " done"
else
echo " Mac unreachable at ${MAC_HOST} — SKIPPED"
fi
# --- Summary ---
echo ""
echo "=== Built artifacts ==="
for f in "${OUT}"/clavitor-*; do
[ -f "$f" ] || continue
size=$(du -h "$f" | cut -f1)
arch=$(file -b "$f" | head -c 80)
printf " %-30s %6s %s\n" "$(basename "$f")" "$size" "$arch"
done