Repository navigation
tests: Cover bootc 1.16.4 and BLS in the 1.16 bridge test - #30
cgwalters-bot wants to merge 4 commits into
Conversation
3421d83 to
1ad219c
Compare
It was excluded in bb674f1 because the published Fedora 44 image shipped a bootc that deadlocked when running GC after a pull (bootc-dev#2364). The fix (71ad2d3) is in 1.16.8, and quay.io/fedora/fedora-bootc:44 now ships bootc 1.16.10, so the job passes again. Generated-by: AI
btrfs is one of the two filesystems where a sealed composefs system can enforce fs-verity, but no CI job installed onto it. Add one Fedora 44 leg, sealed UKI with systemd-boot, so fs-verity enforcement on btrfs is covered too. CentOS is left out as its kernel has no btrfs. The leg is added with a computed include list rather than a new matrix axis, so it's one job rather than multiplying the existing matrix. Generated-by: AI
test-49-composefs-1-16-bridge was opt-in and required externally prepared fixture images, so nothing ran it and the 1.16.0 UKI upgrade path was untested in practice. Build the fixtures from the tree instead. The stager is the current UKI image with bootc swapped for the pinned 1.16.0 Koji RPM, and its initramfs and UKI regenerated by that version, so the install, the initramfs and the UKI arguments are all 1.16.0's. The bridge and upgrade images are the existing test image and synthetic upgrade image, labeled as the test expects. `just test-composefs-bridge` does all of it and CI runs it for sealed and unsealed on Fedora 44 (Koji only has 1.16.0 as an fc45 build, which installs on 44). It runs with the rest of the heavy jobs rather than on a schedule: it takes about as long as a test-integration leg, and there's no scheduled CI workflow whose failures anyone would see. Generated-by: AI
The bridge test only pinned bootc 1.16.0, which generates V2 EROFS and
reads only the bare composefs= argument (as do 1.16.1 and 1.16.2), so it
stages the V2 fallback of a dual-format UKI. 1.16.3 already reads
composefs.digest= first but still generates V2, so switching to a
dual-format UKI fails there ("The UKI has the wrong composefs=
parameter"). 1.16.4 is the first release to generate V1 (composefs-rs
080f925), and on a repository it created itself it stages V1 directly
and the V2 fallback never comes into play. Nothing tested that path. BLS
installs weren't covered at all either, although there the old client
writes the boot entry for the new image itself (bare composefs= with a
V1 digest since 1.16.4).
The EROFS format comes from the repository's meta.json (V2 when
absent) and is never converted, so the 1.16.4 result does not carry over
to a system installed by 1.16.0-1.16.3 and then staged by
1.16.4-1.16.14; with a UKI that case fails (bootc-dev#2334) and
stays untested, as does 1.16.3. The docs now say which paths are covered.
Parametrize the test by the stager version, the format it is expected
to stage and the install mode (sealed or unsealed UKI, or BLS), and pin
bootc-1.16.4-1.fc44 next to 1.16.0. Rather than inferring the booted
format only from the UKI arguments, the test now reads it from the
composefs header of the booted EROFS image, which also works on BLS.
CI gains two legs: 1.16.4 sealed UKI and 1.16.4 BLS.
Generated-by: AI
1ad219c to
bd84fec
Compare
|
Rebased onto upstream main 3c5d235 (1ad219c → bd84fec). The docs conflict came from upstream moving the composefs chapter: the 1.16 upgrade text now edits Status: still relevant. Upstream test-49 still pins only 1.16.0 and covers neither 1.16.4 nor BLS. Generated-by: https://github.com/cgwalters/#llms |
|
❌ dispatch handed back no result because required data was missing. Its reason:
|
Stacked on forge #18 (
bot/cfs-ci-coverage, which makes test-49 build its own fixtures and run in CI). Until that lands, this PR also shows #18's three commits. Only the last commit is new.test-49 pinned only bootc 1.16.0, which (like 1.16.1 and 1.16.2) reads only the bare
composefs=and stages the V2 fallback of a dual-format UKI. 1.16.3 already readscomposefs.digest=first but still generates V2, so switching to a dual-format UKI fails there ("The UKI has the wrong composefs= parameter"). 1.16.4 is the first release to generate V1 (composefs-rs 080f925), and on a repository it created itself it stages V1 directly; nothing tested that path. BLS installs weren't covered either; on those the old client writes the boot entry for the new image itself.Not covered: 1.16.3, and 1.16.4-1.16.14 staging on a system installed by 1.16.0-1.16.3. The EROFS format comes from the repository's
meta.json(V2 when absent) and is never converted, so with a UKI that case fails (bootc-dev#2334); BLS is not affected. The commit also updatesdocs/src/bootc-composefs.7.mdto say which paths are tested.The test now takes the stager version, the format it is expected to stage, and the install mode (
sealed/unsealedUKI orbls).just test-composefs-bridge MODE [1.16.0|1.16.4]pins bootc-1.16.4-1.fc44 next to 1.16.0. It now reads the booted image's EROFS format from its composefs header instead of only inferring it from the UKI arguments, and that also works on BLS. CI gets two more bridge legs, 1.16.4 sealed UKI and 1.16.4 BLS (grub, ext4), for four in total.Rebased onto main 3c5d235. The docs edit moved to
bootc-composefs.7.md(upstream split the composefs chapter out of the experimental one). Since upstream 0c2f487 the composefs test images no longer ship ostree'sprepare-root.conf, which every 1.16bootc installrequires ("Failed to find ostree/prepare-root.conf"), so the stager fixture now writes one; that fix is squashed into the fixture commit from #18. Retested at bd84fec on a 16-core devspace (cgwalters-devspace-39035235087, AMD EPYC 9V45):just validate,just build-mdbook, andjust test-composefs-bridgebls 1.16.4,sealed 1.16.4andsealed 1.16.0on Fedora 44 all passed.Earlier, at 1ad219c on main b06e0b0:
just validateandjust unit-tests(465 passed) and the same three bridge legs passed.Before the rebase, tested on a 16-core devspace (Fedora 44 base, same
justtargets as the CI job):just test-composefs-bridge bls 1.16.4: passed (install by 1.16.4, 1.16.4 switch to current, upgrade, rollback,composefs-gc --assert-no-op; V1 throughout)just test-composefs-bridge sealed 1.16.4: passedjust test-composefs-bridge sealed 1.16.0: passed (regression check of the existing leg; V2 after the switch and rollback, V1 after the upgrade)just validateandjust unit-tests: passedjust validateandjust build-mdbook: passed on a 16-core devspace (734a153); after the Error during upgrade w/ composefs-backend and UKI since 1.16.4: composefs= parameter mismatch bootc-dev/bootc#2334 wording fix,just validatepassed again at 3421d83Not run:
unsealedwith 1.16.0 (unchanged apart from the shared test code) or with 1.16.4 (the recipe supports it; not in CI).Related: bootc-dev#2248
Generated-by: https://github.com/cgwalters/#llms
Review draft in cgwalters-forge, not upstream yet. This section is removed when the PR is opened upstream.
bootc-dev/bootc, basemainPVTI_lADOE9oHIs4BlJLczg9kEcwTo review:
/promoteon a line of its own, to open it upstream, ready for review. Either covers only the commits pushed so far.Signed-off-by: Colin Walters <walters@verbum.org>to the commits lacking it (the bot's and yours; anyone else's only if you ask), with you as committer./draftline (in the same comment or before) to open it upstream as a draft (/readyundoes that).Bot run: session 929c7a64, agent af1ce3ee · claude-opus-5-5 12.0M in (93% cached) / 48k out · ~$7.36 inference + ~$2.36 compute (est., list prices) · 59m wall · 15.0 core-h, Actions run 36220336361