feat(release): version live-image, skip rebuild+redownload when unchanged
CI / Lint + build + test (push) Successful in 1m41s
Release / detect (push) Successful in 7s
Release / build-live-image (push) Failing after 3m58s
Release / bundle (push) Has been skipped

Splits the release workflow into three jobs (detect, build-live-image,
bundle) so the ~9 min mkosi build only runs when live-image/VERSION
bumps. The slim bundle (~30 MB: orchestrator + agent + deploy scripts
+ a live-image/VERSION pointer) rebuilds every push; the ~300 MB
vmlinuz+initrd.img are published separately under the immutable
live-image/<version>/ path. install.sh compares the pointer to
/var/lib/vetting/live/VERSION and fetches the files only on mismatch,
cutting repeat-install wall-clock from ~30 s + 300 MB to ~10 s + 0 MB
on the common no-live-image-change release.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-04-20 21:04:14 -04:00
parent 4c153bb115
commit 211abdf08f
7 changed files with 309 additions and 108 deletions
+15 -4
View File
@@ -4,13 +4,24 @@ Debian-based Linux live image that PXE-booted hosts drop into. Runs the
`vetting-agent` binary under systemd and reaches back to the orchestrator
over HTTP+SSE.
## Preferred build path: `make release`
## Versioning
Run `make release` from the repo root (Linux/WSL) — it builds the live
image *and* bundles it with the orchestrator binary, install scripts,
and pinned iPXE SHAs into a single `vetting-bundle-<sha>.tar.gz`. See
The live image has its own version marker at
[VERSION](VERSION). Bump it (`v<major>.<minor>.<patch>`) whenever
any mkosi input changes; CI only rebuilds and republishes
`live-image/<VERSION>/{vmlinuz,initrd.img}` on the push that touches
that file. The slim release bundle carries only a pointer to this
version, and `install.sh` fetches the actual files from the registry
when the target's on-disk copy is stale. See
[../docs/operations.md](../docs/operations.md) for the install flow.
## Release bundling
`make release` from the repo root produces `vetting-bundle.tar.gz`
orchestrator + agent + install scripts + a `live-image/VERSION`
pointer. It does **not** embed `vmlinuz`/`initrd.img`; those come
from the registry at install time.
## Manual build (dev loop)
On Windows:
+1
View File
@@ -0,0 +1 @@
v0.1.0