75 lines
2.6 KiB
Bash
Executable File
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
|