Adds installer/Containerfile (a separate Anaconda-webui environment container, distinct from the quine-linux OS image) plus build-installer-image/build-installer-iso tasks that drive bootc-image-builder's bootc-installer type against it. Lets a forked/ patched anaconda-webui (built via COPR) get baked into the install ISO instead of stock Fedora's. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
115 lines
4.2 KiB
YAML
115 lines
4.2 KiB
YAML
version: '3'
|
|
|
|
vars:
|
|
IMAGE: quine-linux
|
|
INSTALLER_IMAGE: quine-installer
|
|
COPR_REPO: philip-peterson/quine-anaconda-webui
|
|
OUTPUT_DIR: ./output
|
|
|
|
tasks:
|
|
default:
|
|
desc: List available tasks
|
|
cmds:
|
|
- task --list
|
|
silent: true
|
|
|
|
build-image:
|
|
desc: >-
|
|
Build the quine-linux bootc container image, as root (so bootc and
|
|
bootc-image-builder -- both of which read root's default
|
|
containers-storage location -- can see the result).
|
|
cmds:
|
|
- sudo podman build -t {{.IMAGE}} -f Containerfile .
|
|
sources:
|
|
- Containerfile
|
|
- overlay/**/*
|
|
- patches/**/*
|
|
|
|
build-iso:
|
|
desc: >-
|
|
Build a bootable install ISO from the local quine-linux image, via
|
|
bootc-image-builder. Output lands in {{.OUTPUT_DIR}}/bootiso/install.iso.
|
|
deps: [build-image]
|
|
cmds:
|
|
- mkdir -p {{.OUTPUT_DIR}}
|
|
- >-
|
|
sudo podman run --rm --privileged --pull=newer
|
|
--security-opt label=type:unconfined_t
|
|
-v {{.OUTPUT_DIR}}:/output
|
|
-v /var/lib/containers/storage:/var/lib/containers/storage
|
|
quay.io/centos-bootc/bootc-image-builder:latest
|
|
--type iso --local {{.IMAGE}}
|
|
generates:
|
|
- "{{.OUTPUT_DIR}}/bootiso/install.iso"
|
|
|
|
build-installer-image:
|
|
desc: >-
|
|
Build the patched-Anaconda installer-environment container (see
|
|
installer/Containerfile and docs/patched-anaconda-installer.md). This
|
|
is separate from the quine-linux OS image itself. Defaults to the
|
|
{{.COPR_REPO}} COPR project; override with
|
|
`task build-installer-image COPR_REPO=you/other-project`.
|
|
cmds:
|
|
- sudo podman build -t {{.INSTALLER_IMAGE}} --build-arg COPR_REPO={{.COPR_REPO}} -f installer/Containerfile installer/
|
|
sources:
|
|
- installer/Containerfile
|
|
|
|
build-installer-iso:
|
|
desc: >-
|
|
Build a bootable install ISO using the patched-Anaconda installer
|
|
image to install the quine-linux bootc image, via
|
|
bootc-image-builder's `bootc-installer` type. Output lands in
|
|
{{.OUTPUT_DIR}}/bootc-installer/install.iso. Uses the same COPR_REPO
|
|
default/override as build-installer-image.
|
|
deps: [build-image]
|
|
cmds:
|
|
- task: build-installer-image
|
|
vars: { COPR_REPO: "{{.COPR_REPO}}" }
|
|
- mkdir -p {{.OUTPUT_DIR}}
|
|
- >-
|
|
sudo podman run --rm --privileged --pull=newer
|
|
--security-opt label=type:unconfined_t
|
|
-v {{.OUTPUT_DIR}}:/output
|
|
-v /var/lib/containers/storage:/var/lib/containers/storage
|
|
quay.io/centos-bootc/bootc-image-builder:latest
|
|
--type bootc-installer
|
|
--bootc-installer-payload-ref localhost/{{.IMAGE}}
|
|
localhost/{{.INSTALLER_IMAGE}}
|
|
generates:
|
|
- "{{.OUTPUT_DIR}}/bootc-installer/install.iso"
|
|
|
|
status:
|
|
desc: Show current bootc deployment status (what's booted, what's staged/rollback).
|
|
cmds:
|
|
- bootc status
|
|
|
|
test:stage:
|
|
desc: >-
|
|
Build the local image and stage it as the next-boot target on THIS
|
|
machine (bootc switch, no reboot yet). This is the fast way to test a
|
|
change -- especially the CS8409 mic-fix kernel module -- against the
|
|
real running system without building an ISO or reinstalling anything.
|
|
Reboot separately when ready: `task test:boot`, or `sudo systemctl reboot`.
|
|
deps: [build-image]
|
|
cmds:
|
|
- sudo bootc switch --transport containers-storage localhost/{{.IMAGE}}
|
|
- bootc status --booted
|
|
- echo "Staged localhost/{{.IMAGE}} for next boot. Run task test:boot when ready to reboot into it."
|
|
|
|
test:boot:
|
|
desc: Stage the local image (if not already) and reboot into it now.
|
|
prompt: This will reboot this machine into the locally-built {{.IMAGE}} image. Continue?
|
|
deps: [test:stage]
|
|
cmds:
|
|
- sudo systemctl reboot
|
|
|
|
revert:
|
|
desc: >-
|
|
Roll back to the previously-booted deployment and reboot into it --
|
|
undoes a `test:boot` switch (or any other deployment change) if
|
|
something's wrong. Safe even if nothing was ever switched: bootc/
|
|
rpm-ostree always keep the prior deployment around for exactly this.
|
|
prompt: This will reboot this machine back into the previous deployment. Continue?
|
|
cmds:
|
|
- sudo bootc rollback
|
|
- sudo systemctl reboot
|