Example platform: AlmaLinux 10
AlmaLinux 10 is not a shipped platform. Its example root keeps composition and rendering exercised without its build, boot and publication cost in every pull request.
| Example | Platform resource | Why it is an example |
|---|---|---|
examples/almalinux-10 | platforms/almalinux-10.yaml | The vendor labels its bootc base experimental. It is useful for EL10 composition work, but it is not a support commitment. |
It composes and renders in checks.yml; it is not in resources/platforms/,
image-publish.yml, or the image legs of image-bootcheck.yml.
Fedora 45 was an example until 2026-10-30 and is now a shipped platform: its mirrored base, pin and status are in Fedora 45.
Weekly check
.github/workflows/examples-weekly.yml runs every Wednesday at 06:00 UTC and can
be dispatched. For the example it copies the root, resolves the vendor's current
digest, replaces the copied Platform's digest, builds the image, writes a QCOW2,
runs the boot, session and first-boot checks, and uploads the results for 14 days.
It never publishes, signs or pushes an image, and a red weekly run blocks no pull request or release.
Build an example locally
You need git, Go 1.26.9 or the deskosctl release binary, rootful podman,
skopeo, qemu-img and about 20 GB free.
1. Get the compiler
Get deskosctl as in install.md, or
run make build in the checkout.
2. Track the current vendor digest
The committed example carries a documented pin; refresh it locally before a manual build.
digest=$(skopeo inspect --format '{{.Digest}}' \
docker://quay.io/almalinuxorg/almalinux-bootc:10)
sed -i "s|^ digest: .*| digest: $digest|" \
examples/almalinux-10/platforms/almalinux-10.yaml
3. Compose, render and build
AlmaLinux:
./bin/deskosctl validate ./examples/almalinux-10
./bin/deskosctl render ./examples/almalinux-10 \
--workstation example-almalinux-10 --output ./dist/alma
sudo podman build -t localhost/example-almalinux-10:test ./dist/alma
4. Write a QCOW2
mkdir -p output
sudo podman run --rm -it --privileged --pull=missing \
--security-opt label=type:unconfined_t \
-v "$PWD/output:/output" \
-v /var/lib/containers/storage:/var/lib/containers/storage \
quay.io/centos-bootc/bootc-image-builder:latest \
build --type qcow2 --rootfs xfs --no-default-kernel-args \
--chown "$(id -u):$(id -g)" localhost/example-almalinux-10:test
The disk is output/qcow2/disk.qcow2; boot it with virt-install/virt-manager
or QEMU. There is no published image and no update source outside your local test.
Fedora's own disk is --rootfs btrfs on deskos-core-fedora-45, documented in
Fedora 45.
5. What a successful check means
validate and render prove the composition and build context, podman build the
build against the base, the QCOW2 boot that the image starts, and the session and
first-boot checks the desktop and wizard. These are example checks, not a support
promise.
Re-promoting an example platform
- Make the base durable first. For Fedora, copy the exact digest into a
DeskOS-controlled registry, for example
quay.io/deskos/fedora-silverblue:45-YYYYMMDD, and retain the composes that should remain buildable. AlmaLinux has the same retention concern. - Move the Platform resource from the example root to
resources/platforms/<name>.yamland update its comments to say what was measured against the mirrored digest. - Add a shipped reference workstation under
resources/workstations/if the platform will publish an image. - Add it to
resources/README.md,docs/platforms.md,docs/install.md,docs/architecture.md,docs/roadmap.mdand theREADME.mdplatform matrix. - Re-add its image leg to
image-bootcheck.ymland its publication leg toimage-publish.yml. Do not make a new platform inherit another platform's disk path; declare its own. - Regenerate goldens with
go test ./internal/compiler -update, review the diff, runmake check, build and boot the image, run the session and first-boot checks, and only then publish.