cook: two default dishes (phyllomeos, phyllomeos-headless) + guest/experimental tiers; CI builds raw images
build-image / validate (push) Successful in 8s
ci / cook (push) Successful in 10s
build-image / build-image (phyllomeos, 16384) (push) Failing after 1m13s
build-image / build-image (phyllomeos-headless, 8192) (push) Failing after 11m10s

Manifest groups get a tier; only `default` is generated (make all TIER=...,
--tier). Default: phyllomeos (GNOME + virt-manager) and phyllomeos-headless,
Fedora 44, systemd-boot, CPU-agnostic hypervisor ingredient (hypervisor_type:
any). guest tier: guest-server, guest-desktop. experimental: biosboot/grub,
encrypted, rawhide. Generator clears stale recipes/dishes before writing.

build-image.sh: --dish and --tier; deploy.sh: --tier. build-iso.yaml replaced
by build-image.yaml: raw images for both editions on the fedora:host runner
(TMPDIR=/var/tmp, max-parallel 1), attached with the flattened kickstarts to
tagged releases. Live edition no longer built.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Lukas Greve
2026-09-20 11:35:28 +02:00
co-authored by Claude Sonnet 5
parent 35d8879bcc
commit 67316d9852
11 changed files with 433 additions and 141 deletions
+30 -7
View File
@@ -6,7 +6,12 @@
# (e.g. `virtpull local ./build/<dish>.img --wonder-vm NAME`) instead of a
# bootable ISO.
#
# Usage: ./build-image.sh [--as qcow2] [--root-size MiB] [--extra-ks FILE]
# Usage: ./build-image.sh [--dish NAME] [--tier TIER] [--as qcow2]
# [--root-size MiB] [--extra-ks FILE]
#
# --dish skips the interactive picker (used by CI); --tier selects which
# manifest tier of dishes to generate (default: default; see
# cook/recipes_manifest.yaml).
#
# Requires: lorax-lmc-novirt (livemedia-creator), qemu-img, and root (the
# --no-virt disk install needs real loop-device access via
@@ -31,10 +36,20 @@
set -euo pipefail
AS_FORMAT=""
DISH=""
TIER="${TIER:-default}"
ROOT_SIZE=8192
EXTRA_KS=""
while [[ $# -gt 0 ]]; do
case "$1" in
--dish)
DISH="$2"
shift 2
;;
--tier)
TIER="$2"
shift 2
;;
--as)
AS_FORMAT="$2"
shift 2
@@ -49,7 +64,7 @@ while [[ $# -gt 0 ]]; do
;;
*)
echo "Unknown argument: $1"
echo "Usage: $0 [--as qcow2] [--root-size MiB] [--extra-ks FILE]"
echo "Usage: $0 [--dish NAME] [--tier TIER] [--as qcow2] [--root-size MiB] [--extra-ks FILE]"
exit 1
;;
esac
@@ -81,15 +96,23 @@ if [[ $EUID -ne 0 ]] && ! sudo -n true 2>/dev/null; then
fi
# Regenerate recipes and dishes before building (they are build products)
if ! (cd cook && make all); then
if ! (cd cook && make all TIER="$TIER"); then
echo "Failed to generate dishes in cook/ (see 'make all' in cook/)"
exit 1
fi
# Pick a dish (shared with deploy/deploy-distro.sh)
# shellcheck source=./deploy/select-dish.sh
source "$(dirname "$0")/deploy/select-dish.sh"
dish="$selected_dish"
# Pick a dish: --dish, or interactively (shared with deploy/deploy-distro.sh)
if [[ -n "$DISH" ]]; then
dish="${DISH%.cfg}"
if [[ ! -f "cook/dishes/${dish}.cfg" ]]; then
echo "Dish not found: cook/dishes/${dish}.cfg (is --tier '$TIER' right?)"
exit 1
fi
else
# shellcheck source=./deploy/select-dish.sh
source "$(dirname "$0")/deploy/select-dish.sh"
dish="$selected_dish"
fi
# Derive the target release, same convention as
# deploy/deploy-distro.sh's find_fedora_iso() (used for --releasever, which