fix(ci): restore host-pulled golden base on x86_64, prep macOS disk templates

Merged
BN
1mo ago
+76-5

Why

release-golden bake is 0/3 since the registry-streaming change (3f3a35ca):

  • x86_64: every attempt dies in smolvm start pulling the base — crane manifest failed ... lookup ghcr.io on 100.96.0.1:53: i/o timeout (runs #68, #69, #70, 9/9 attempts). The nested VM resolver cannot reach ghcr.io on hosted runners, while the host pulls the same digest fine (provenance capture, smolvm download, cargo all succeed on-host).
  • aarch64 (macos-14): dies at VmCreate with krun_start_enter -22 (EINVAL) — smolvm's own hint for a disk/overlay that could not be opened — without ever preparing the requested 120G templates the way the Linux job does.

What

  • x86_64: restore the host-side docker pull + docker save tar path (the 0.32.7-proven configuration, with SMOLVM_MAX_IMAGE_BYTES and the memory-headroom waits), keeping the KVM grant, the -x86-64 name fix, and whole-artifact publish. A local tar keeps the 17 GiB base off the VM network path entirely.
  • macOS: build the 120G storage/overlay templates explicitly with the brewed e2fsprogs (mirroring Linux), settle 15s + confirm deletion between retries, and dump df / template / machine-list diagnostics on failure so the next failure mode is identifiable.
  • Validation: yaml.safe_load + bash -n clean on all 24 run blocks.

Verify

  • PR checks (self-hosted suite) green
  • gh workflow run release-golden --ref fix/release-golden-hosted-bake bakes both goldens

Summary by cubic

Fixes the release-golden bake on hosted runners. The x86_64 VM could not pull the base image from ghcr.io because the nested resolver times out, and macOS failed at VmCreate because the 120G disk templates were never prepared.

  • x86_64 pulls the base image on the host and passes it to the VM as a local tar, keeping the 17 GiB image off the VM network path.
  • Adds memory-headroom waits before retries so the host has enough available memory to start the VM.
  • macOS builds the 120G storage and overlay templates explicitly with mkfs.ext4 from e2fsprogs before the bake.
  • Waits after VM deletion and confirms it is gone before retrying, and dumps disk/machine diagnostics on failure.
  • Restores the dropped attempts counter in the macOS retry loop so it still gives up after three attempts.

Summary by CodeRabbit

  • Chores
    • Improved Linux golden image build reliability by streaming the base image directly into the build environment and checking for sufficient memory before retries.
    • Improved macOS build stability with expanded storage preparation, more reliable DNS handling, and additional virtual machine cleanup steps.
    • Enhanced diagnostics after failed builds, including disk and virtual machine status information, to simplify troubleshooting intermittent failures.