From 9f02e0faf23eccf0c4ed62be2ec14d004c59ba97 Mon Sep 17 00:00:00 2001 From: Anthony Date: Wed, 1 Jul 2026 08:27:58 +0000 Subject: [PATCH] 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 --- .github/workflows/deploy.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 70e5fbe..a35c3ea 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -134,6 +134,14 @@ jobs: fi git -C "$SRC" fetch --depth 1 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 -m 0755 /tmp/agentbbs-deploy-agentbbs /usr/local/bin/agentbbs install -m 0755 /tmp/agentbbs-deploy-ascii-live /usr/local/bin/ascii-live