honcho: plugin web pages with i18n, defer plugin detail to custom admin page
Nightly Build / build (push) Failing after 6m13s

This commit is contained in:
2026-07-20 15:29:26 +01:00
parent 8edac4de99
commit 6040f9a339
22 changed files with 927 additions and 2 deletions
+117
View File
@@ -0,0 +1,117 @@
#!/usr/bin/env sh
# Build, package, and deploy Skald Circle for macOS (ARM64).
#
# Usage: ./ci/package-macos.sh
#
# Behaviour depends on the current git branch:
# release → builds a release tarball, checks version uniqueness, uploads + updates LATEST
# main → builds a nightly tarball, uploads to nightly/ (no version check)
# other → aborts with an error
#
# Prerequisites:
# - macOS ARM64 (Apple Silicon)
# - SSH alias "skaldserver" configured in ~/.ssh/config pointing to the builds host
# - ssh + scp working to skaldserver (key-based auth)
# - ci/package.sh, ci/verify-version.sh in the repo
set -eu
cd "$(dirname "$0")/.."
# ── Config ──────────────────────────────────────────────────────────────────
REMOTE_HOST="skaldserver"
REMOTE_BASE="/var/www/builds.skaldagent.net"
BUILDS_URL="https://builds.skaldagent.net"
# ── Detect branch ────────────────────────────────────────────────────────────
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
echo "[package-macos] Branch: ${BRANCH}"
case "$BRANCH" in
release)
MODE="release"
;;
main)
MODE="nightly"
;;
*)
echo "[package-macos] ❌ Aborting: must be on 'release' or 'main' branch (current: ${BRANCH})"
exit 1
;;
esac
# ── Version ──────────────────────────────────────────────────────────────────
if [ "$MODE" = "release" ]; then
VERSION="v$(grep '^version ' Cargo.toml | head -1 | sed 's/.*"\(.*\)"/\1/')"
echo "[package-macos] Release version: ${VERSION}"
else
VERSION="nightly"
echo "[package-macos] Nightly build"
fi
# ── Verify version is new (release only) ────────────────────────────────────
if [ "$MODE" = "release" ]; then
echo "[package-macos] Checking if release ${VERSION} already exists on remote..."
REMOTE_DIR_URL="${BUILDS_URL}/releases/${VERSION}/"
if curl -I --fail --silent --output /dev/null "$REMOTE_DIR_URL" 2>/dev/null; then
echo "[package-macos] ❌ Release ${VERSION} already exists at ${REMOTE_DIR_URL}"
echo "[package-macos] Bump the version in Cargo.toml before releasing."
exit 1
fi
echo "[package-macos] ✅ Release ${VERSION} is new — proceeding."
fi
# ── Build ────────────────────────────────────────────────────────────────────
echo "[package-macos] Building (this will take a while)..."
cargo build --release
cargo build --release -p skald-setup
echo "[package-macos] ✅ Build complete."
# ── Package ──────────────────────────────────────────────────────────────────
echo "[package-macos] Packaging..."
mkdir -p dist
if [ "$MODE" = "release" ]; then
./ci/package.sh \
--version "$VERSION" \
--os darwin \
--arch arm64 \
--target-dir target/release \
--output dist/
else
./ci/package.sh \
--version nightly \
--os darwin \
--arch arm64 \
--target-dir target/release \
--output dist/
fi
# ── Upload via SCP ───────────────────────────────────────────────────────────
echo "[package-macos] Uploading to ${REMOTE_HOST}..."
if [ "$MODE" = "release" ]; then
# Create remote directory and copy tarball
ssh "$REMOTE_HOST" "mkdir -p ${REMOTE_BASE}/releases/${VERSION}"
scp dist/skald-circle-${VERSION}-darwin-arm64.tar.gz \
"${REMOTE_HOST}:${REMOTE_BASE}/releases/${VERSION}/"
# Update LATEST pointer
echo "$VERSION" | ssh "$REMOTE_HOST" "cat > ${REMOTE_BASE}/releases/LATEST"
echo "[package-macos] ✅ Release ${VERSION} deployed + LATEST updated."
else
# Nightly — copy into nightly/ directory
ssh "$REMOTE_HOST" "mkdir -p ${REMOTE_BASE}/nightly"
scp dist/skald-circle-nightly-darwin-arm64.tar.gz \
"${REMOTE_HOST}:${REMOTE_BASE}/nightly/"
echo "[package-macos] ✅ Nightly deployed."
fi
# ── Summary ──────────────────────────────────────────────────────────────────
echo ""
echo "[package-macos] ─────────────────────────────────────────────"
echo "[package-macos] Mode: ${MODE}"
echo "[package-macos] Version: ${VERSION}"
echo "[package-macos] Branch: ${BRANCH}"
echo "[package-macos] Remote: ${REMOTE_HOST}"
echo "[package-macos] ─────────────────────────────────────────────"
echo "[package-macos] ✅ Done."