ci(deploy): preempt self-update timer so it can't starve the deploy lock

The self-update systemd timer redeploys from source (no SKIP_BUILD) and
can hold setup.sh's flock for >5min while compiling on a tiny droplet.
When it fires close to a CI push it starves the deploy, which waits the
full 5min on the lock and then fails with 'another setup.sh run is in
progress (lock held >5m)'.

The CI push is authoritative (ships prebuilt binaries + resets to the
exact commit), so stop any in-flight timer run to release the lock and
pause the timer before taking it. setup.sh re-enables the timer at the
end of its run.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Anthony 2026-07-01 08:27:58 +00:00
parent c8718f25ea
commit 9f02e0faf2

View file

@ -134,6 +134,14 @@ jobs:
fi fi
git -C "$SRC" fetch --depth 1 origin "$BRANCH" git -C "$SRC" fetch --depth 1 origin "$BRANCH"
git -C "$SRC" reset --hard "origin/$BRANCH" git -C "$SRC" reset --hard "origin/$BRANCH"
# Preempt the self-update timer. It redeploys from source (no
# SKIP_BUILD) and can hold setup.sh's flock for >5min while compiling
# on this tiny droplet, which would starve and time out the deploy
# below. This CI push is authoritative (prebuilt binaries + reset to
# the exact commit), so stop any in-flight timer run to release the
# lock and pause the timer so it can't re-fire mid-deploy; setup.sh
# re-enables the timer at the end of its run.
systemctl stop agentbbs-update.timer agentbbs-update.service 2>/dev/null || true
# Install the runner-built binaries, then tell setup.sh not to compile. # Install the runner-built binaries, then tell setup.sh not to compile.
install -m 0755 /tmp/agentbbs-deploy-agentbbs /usr/local/bin/agentbbs install -m 0755 /tmp/agentbbs-deploy-agentbbs /usr/local/bin/agentbbs
install -m 0755 /tmp/agentbbs-deploy-ascii-live /usr/local/bin/ascii-live install -m 0755 /tmp/agentbbs-deploy-ascii-live /usr/local/bin/ascii-live