deploy the tag, and stop spending a minute on a host that is known to be down
Two things the 2026.08.23.01 rollout showed. `edge-pertento-bridge` is down and staying down for some days, and the deploy agent had no way to know: it spent four attempts and up to sixty seconds apiece before reporting it unreachable. Correct behaviour against a list that had not been told, so `docs/servers.md` now has a Deliberately skipped section, with the host's row kept verbatim inside it so restoring it is one move. A host there is named as skipped in the report and costs nothing else. And the procedure said `git pull --ff-only`, which follows `master` rather than the tag being deployed. A docs commit landed mid-rollout, so every host came up on `e6f1388a` — one past `deploy/2026.08.23.01` — and "deployed the tag" was true of none of them. Harmless this time, and it need not have been: it is now fetch plus `merge --ff-only <tag>`. A host that is AHEAD of the tag is reported, never reset. Also lands the report itself, which the agent wrote and could not push. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -136,6 +136,11 @@ That document holds every machine, its tailnet name, **its login user**, its che
|
||||
platform runs on it. Read it at the start of every deploy, and treat the hosts marked as having no
|
||||
platform as out of scope.
|
||||
|
||||
It also has a **Deliberately skipped** section. A host listed there is not a target: name it as skipped
|
||||
in the report and spend nothing on it. On 2026-08-23 a host that was known to be down cost four attempts
|
||||
and a minute apiece before being reported unreachable — correct behaviour against a list that had not been
|
||||
told. Read that section before you try to reach anything.
|
||||
|
||||
**The login is not always `pastilhas`.** `deadpool-rezio-bridge` runs as `br`, permanently, and more will.
|
||||
Take the user from the table — an orchestrator that hard-codes one fails on that host silently, because
|
||||
`Permission denied (publickey)` looks like a broken key rather than a wrong username.
|
||||
@@ -163,7 +168,15 @@ assemble at the end from memory is a report that will be wrong about the host th
|
||||
`--porcelain` counts untracked files, and on 2026-08-21 that skipped a host over one stray script a
|
||||
fast-forward could never have touched. Untracked files get a note in the report, not a skip. Never
|
||||
discard someone's work to ship a release.
|
||||
2. `git pull --ff-only`. A non-fast-forward means that checkout has diverged: skip and report.
|
||||
2. **`git fetch origin --tags` then `git merge --ff-only <tag>`** — the TAG you are deploying, not
|
||||
`master`. `git pull --ff-only` follows the branch, so a commit pushed while you are rolling out lands
|
||||
on some hosts and not others, and "deployed the tag" stops being true of any of them. That happened on
|
||||
2026-08-23: every host came up one commit past the tag because a docs commit landed mid-rollout. It was
|
||||
harmless and it need not have been.
|
||||
|
||||
A non-fast-forward means that checkout has diverged: skip and report. A tag that will not fast-forward
|
||||
because the host is AHEAD is the same answer — report it, do not reset.
|
||||
|
||||
3. **Update the plugins.** `bun run plugins:update`. Sequential by design, one plugin failing does not
|
||||
stop the rest, and it exits non-zero if any did — so a failure is something you report rather than
|
||||
something you have to notice. A failure here is usually an uncommitted change in that plugin's own
|
||||
|
||||
Reference in New Issue
Block a user