Skip to content

ci: pin the first golden snapshot that is a whole build - #102

Open
pythonlearner1025 wants to merge 1 commit into
mainfrom
chore/rebake-golden-snapshot
Open

ci: pin the first golden snapshot that is a whole build#102
pythonlearner1025 wants to merge 1 commit into
mainfrom
chore/rebake-golden-snapshot

Conversation

@pythonlearner1025

Copy link
Copy Markdown
Member

Replaces 425047509 with 425198627 in both workflows.

425047509 was a partial build — its bake died at sshd -t and never reached lever 2, the root-password fix, the identity strip or the marker. Every workspace booted from it carries the builder's /etc/machine-id and refuses a host SSH login. The full diagnosis, and the three stacked bugs behind it, are in #101; this PR is only the pin.

Why this one is trustworthy

425198627 came out of the repaired bake, passed that bake's own probe (#98), and was then verified independently by booting it a second time:

Check Result
root aging Password expires: never — key login works with no chage workaround
marker ghcr.io/blitzdotdev/blitz-box@sha256:b48f7a2a…
docker image inspect passes
sshd 0.0.0.0:2222 owned by sshd; ssh.socket masked, ssh.service enabled
/etc/machine-id dd05e9bd… — freshly generated, not the builder's
lever 2 snapd, unattended-upgrades, apt-daily all disabled
size 2.40 GB, x86, ~$0.05/month

About the timings in the comment

The 41.3 s / 40.1 s figures were measured on the partial build, which carried the box image but none of lever 2. I left them as written and said so in the comment: they are a floor for this image, not a measurement of it. I did not re-measure, so I am not quoting a number I did not take.

Blast radius

Both deployments share one Hetzner project, so one id serves both — the same reason #96 gave. Canary picks this up on the next main deploy. Prod picks it up only on its next v* tag, which stays a human decision.

425047509 is left in place, so nothing in flight breaks. 425198277 — the broken snapshot from the first attempt today — is deleted.

Merge #101 first; without it the next rebake reproduces the same partial build.

🤖 Generated with Claude Code

https://claude.ai/code/session_01J6fUBY1B27EzvDwbhfBf52

425047509 was a partial build. Its bake died at `sshd -t` and never reached
lever 2, the root-password fix, the identity strip or the marker, so every
workspace on it carries the builder's /etc/machine-id and refuses a host SSH
login. See #101.

425198627 is baked from the repaired script and verified after the fact:
root password never expires and a key login works with no workaround, the
marker names the box image, `docker image inspect` passes, sshd owns 2222
with ssh.socket masked, /etc/machine-id is freshly generated, and snapd,
unattended-upgrades and apt-daily are all disabled. 2.40 GB, x86.

The 41.3 s and 40.1 s in the comment above were measured on the partial
build, which carried the box image but none of lever 2. They stay as written
because they are a floor for this image, not a measurement of it.

Both deployments share one Hetzner project, so one id serves both. Prod
picks it up on its next v* tag.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J6fUBY1B27EzvDwbhfBf52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant