CI: full box-lifecycle regression on the bench; sign the runner in to the box access gateway#144
Merged
Merged
Conversation
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |
This was referenced Jul 23, 2026
danielrmerskine
force-pushed
the
de/box-lifecycle-ci
branch
from
July 23, 2026 20:29
93f8372 to
317602e
Compare
update-regression.yml tested only `lager update --force` (the path users hit least) and predates the update confirmation prompt, so it has been aborting at the prompt. Rebuild it as a Box Lifecycle workflow covering the paths users actually run, each verified with `lager hello` and ended with a hardware smoke test: - `lager update --check` dry run - downgrade to the previous release tag (version pin + rollback path, floored at v0.32.0 - a current CLI cannot drive a pre-migration box) - common-path `lager update` (previous release -> main), the invocation users run most; a release that breaks upgrade-from-previous goes red here - no-op update, asserting the "already at version" fast path (and its container-liveness gate) actually engages - forced clean rebuild (--force) - scoped uninstall + from-scratch install. Scope is load-bearing: --keep-config preserves the saved nets AND the box's control-plane enrollment; --all is deliberately never used because it removes the runner's key from authorized_keys and CI has no TTY for install's password fallback - a best-effort recovery reinstall on failure so a red run cannot strand the bench for a week Both bench workflows now also sign in to the box access gateway at job start (vars.LAGER_AUTH_URL + CI account secrets); box gateway auth landed in v0.32.0 and bench runs have failed at "requires sign-in" since. The doubled `lager hello` covers the gateway's one-time first-contact link recording after a fresh login.
…ninstall authenticate non-interactively
danielrmerskine
force-pushed
the
de/box-lifecycle-ci
branch
from
July 23, 2026 20:41
317602e to
e155c12
Compare
Collaborator
Author
|
Supervised validation complete: run 30050163152 is fully green end to end — all five update paths (dry run, downgrade to previous tag, common-path update, fast-path assert, forced rebuild), hardware smoke, scoped uninstall, headless from-scratch install, and a final hardware smoke on the freshly installed box. The six supervised runs before this one each surfaced a real defect, all now fixed or worked around:
The workflow's recovery step now also fires on cancellation (a cancelled mid-install run is the one observed way to strand the bench). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two changes to bench CI:
update-regression.ymlbecomesBox Lifecycle: the weekly job previously tested onlylager update --force— the path users hit least — and has been aborting at the update confirmation prompt it predates. It now walks the bench box through every lifecycle path users actually run, in an order where each step sets up the next and the box ends the run freshly installed on current main.vars.LAGER_AUTH_URL+LAGER_CI_EMAIL/LAGER_CI_PASSWORDsecrets, least-privilege: member role with a direct assignment to the bench box only).What the lifecycle run proves, step by step
lager update --check--version <previous tag>lager update(N-1 -> main)lager update --forcelager uninstall(scoped) +lager install+ smokelager hellogates every phase; a Rigol supply smoke test runs after the update phases and again after the reinstall so failures attribute cleanly.The deliberately scoped uninstall
--all: it removes the runner's key from the box'sauthorized_keys, and CI has no TTY for install's password fallback — that would strand the bench until someone re-keys it by hand.--keep-config:/etc/lagerholds the saved bench nets andcontrol_plane.json(the box's gateway enrollment); wiping either breaks the rest of the run.installgoes by--ipbecauseuninstall --yesremoves the local box entry, then the box is re-registered.failure()-gated recovery step does one best-effort reinstall so the uninstall->install window cannot leave the bench dead for a week; the run itself stays red.Testing
lager-bench).workflow_dispatchof both workflows from this branch before merge — a real box update/reinstall cannot be rehearsed in a container; results will be posted here.Notes
integration-tests.ymlon the one physical bench), and the no-pull_requestposture (public repo + self-hosted runner) are unchanged.--yesfix for the old workflow (same file, superset).