lkb-pipeline/auto_deploy.sh
allaun e5bfdc0492 feat: LKB compute pipeline + eigensolid receipts
Containerized LKB worker (Dockerfile.lkb), Postgres-backed queue,
auto-deploy timer, and eigensolid convergence check module.

Build: 0 jobs (no Lean build needed)
2026-07-08 20:01:29 -05:00

50 lines
No EOL
1.3 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
REGISTRY="100.79.14.103:5000"
IMAGE="$REGISTRY/library/lkb-worker"
SELF_DIR="$(cd "$(dirname "$0")" && pwd)"
HOST=$(uname -n)
case "$HOST" in
*neon*) WORKER_COUNT=12; PLATFORM="arm64" ;;
*) WORKER_COUNT=4; PLATFORM="amd64" ;;
esac
TAG="$PLATFORM"
echo "[auto-deploy] $HOST: checking $IMAGE:$TAG"
LAST_HASH_FILE="/tmp/lkb-worker-last-hash-$PLATFORM"
REMOTE_HASH=$(curl -s --connect-timeout 5 "$REGISTRY/v2/library/lkb-worker/manifests/$TAG" 2>/dev/null \
| sha256sum | cut -d' ' -f1)
if [ -z "$REMOTE_HASH" ]; then
echo "[auto-deploy] WARNING: cannot reach registry, skipping pull check"
exit 0
fi
if [ -f "$LAST_HASH_FILE" ]; then
LOCAL_HASH=$(cat "$LAST_HASH_FILE")
if [ "$REMOTE_HASH" = "$LOCAL_HASH" ]; then
echo "[auto-deploy] image unchanged, nothing to do"
exit 0
fi
fi
echo "[auto-deploy] new image detected, pulling..."
podman pull --tls-verify=false "$IMAGE:$TAG"
echo "$REMOTE_HASH" > "$LAST_HASH_FILE"
RUNNING=$(podman ps --format "{{.Names}}" | grep lkb-worker || true)
for name in $RUNNING; do
echo "[auto-deploy] restarting $name"
podman rm -f "$name"
done
for i in $(seq 1 "$WORKER_COUNT"); do
podman run -d --rm --name "lkb-worker-$i" --network host "$IMAGE:$TAG" worker
done
echo "[auto-deploy] $WORKER_COUNT workers restarted from $IMAGE:$TAG (hash: $REMOTE_HASH)"