#!/usr/bin/env bash # Publish the current HEAD to the crate.mokkenstorm.dev droplet. The image is # built ON the droplet (native amd64) because an emulated amd64 build of the # Erlang toolchain crashes under QEMU (OTP#10355), so a cross-build from an arm # Mac can't produce a working image. Run from the repo root. set -euo pipefail droplet="${AT_RECORD_DROPLET:-root@206.189.15.37}" tag="$(git rev-parse --short HEAD)" img="ghcr.io/nmokkenstorm/at-record" echo "publishing $tag to $droplet" git archive --format=tar.gz -o /tmp/at-record-src.tgz HEAD scp -o ConnectTimeout=15 /tmp/at-record-src.tgz "$droplet":/opt/at-record/src.tgz ssh -o ConnectTimeout=20 "$droplet" " set -e cd /opt/at-record rm -rf src && mkdir src && tar xzf src.tgz -C src cd src && docker build -t $img:$tag -t $img:latest . cd /opt/at-record sed -i 's/^AT_RECORD_TAG=.*/AT_RECORD_TAG=$tag/' .env docker compose up -d docker image prune -f >/dev/null 2>&1 || true docker compose ps " echo "published $tag; verify:" echo " curl -sf https://crate.mokkenstorm.dev/healthz"