[WIP] Validate ISO build of Rocky Linux 9 - #15
Conversation
Co-authored-by: 8r4n <125826979+8r4n@users.noreply.github.com>
|
@codex[agent] checkout the branch |
On branch |
|
@codex[agent] Proceed with the plan |
Co-authored-by: 8r4n <125826979+8r4n@users.noreply.github.com>
Added ISO boot smoke-test execution to the ISO build workflows; commit |
|
@codex[agent] boot into the iso and verify the funcitionality of the linux system |
I can boot it in QEMU via Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
|
@codex[agent] how can you build and stash the artifact using github repo and then test |
Co-authored-by: 8r4n <125826979+8r4n@users.noreply.github.com>
Use |
|
@codex[agent] now verify the linux system boots with the iso |
Agent-Logs-Url: https://github.com/8r4n/bazzite/sessions/02672ad2-25d1-438a-9537-ff549f9762fa Co-authored-by: 8r4n <125826979+8r4n@users.noreply.github.com>
|
@codex[agent] continue continue try to create a smaller exampel |
Co-authored-by: 8r4n <125826979+8r4n@users.noreply.github.com>
Added a smaller CI path by letting |
|
@copilot review the pull request |
Reviewed the PR and found a workflow input-handling issue in |
There was a problem hiding this comment.
Pull request overview
Adds automated ISO boot validation (via QEMU) to ensure the Rocky Linux 9 ISO variant (and other ISO builds) actually boots into a functioning userspace, and wires that smoke test into CI/workflows.
Changes:
- Introduces a QEMU-based ISO boot smoke test script that extracts kernel/initrd from an ISO and validates boot progress via serial console output.
- Adds a Rocky Linux 9 ISO validation plan doc and a manually-triggered GitHub Actions workflow to validate an ISO from a direct URL.
- Integrates the smoke test into existing ISO build workflows and adds inputs to allow single-ISO builds on demand.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
just_scripts/validate-iso-boot.sh |
New QEMU/xorriso-based boot smoke test script for installer/live ISOs. |
ISO_VALIDATION_ROCKY9.md |
Documentation for acceptance criteria and how to run validation locally/CI. |
.github/workflows/validate_iso_boot.yml |
New on-demand workflow to download an ISO and run the smoke test. |
.github/workflows/build_iso.yml |
Adds optional single-ISO build inputs and runs the smoke test on built installer ISOs; adjusts artifact retention/conditions. |
.github/workflows/build_iso_titanoboa.yml |
Installs QEMU and runs the smoke test for live ISO builds. |
Comments suppressed due to low confidence (4)
just_scripts/validate-iso-boot.sh:202
volume_labelis interpolated into the kernel cmdline as part ofinst.stage2=hd:LABEL=.... Labels with spaces/special characters will break argument parsing and stage2 lookup. Consider validating--labelor encoding spaces (e.g.\x20) before constructing this argument.
"${boot_args_common[@]}"
inst.text
"inst.stage2=hd:LABEL=${volume_label}"
inst.loglevel=debug
)
just_scripts/validate-iso-boot.sh:77
--ramis passed directly to QEMU via-m, but the script doesn't validate it as a positive integer. Consider validatingram_mibafter parsing to catch invalid values early with a clear message.
--ram)
ram_mib=${2:-}
shift 2
;;
just_scripts/validate-iso-boot.sh:81
--cpusis passed directly to QEMU via-smp, but the script doesn't validate it as a positive integer. Consider validatingcpu_countafter parsing to avoid confusing QEMU errors in CI.
--cpus)
cpu_count=${2:-}
shift 2
;;
just_scripts/validate-iso-boot.sh:208
- The Anaconda path can also pass too early because
success_patternsincludes'Linux version '. Tighten the success condition to match an installer/userspace milestone (e.g., Anaconda start) rather than kernel start alone, or require Linux version AND an Anaconda-specific pattern.
'Linux version '
'Starting installer'
'anaconda'
'Running.*Anaconda'
)
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| require_cmd qemu-system-x86_64 | ||
| require_cmd xorriso | ||
| require_cmd timeout | ||
|
|
| "${boot_args_common[@]}" | ||
| rd.live.image | ||
| "root=live:CDLABEL=${volume_label}" | ||
| enforcing=0 | ||
| systemd.unit=multi-user.target |
| --timeout) | ||
| timeout_s=${2:-} | ||
| shift 2 | ||
| ;; |
| 'Linux version ' | ||
| 'systemd\\[[0-9]+\\]: Reached target .*System' | ||
| 'systemd\\[[0-9]+\\]: Started .*' | ||
| 'Welcome to ' | ||
| ) |
| Prereqs: | ||
|
|
||
| - `qemu-system-x86_64` | ||
| - `xorriso` |
|
|
||
| - name: Upload ISOs and Checksum to Job Artifacts | ||
| if: github.ref_name == 'testing' | ||
| if: github.ref_name == 'testing' || github.event_name == 'workflow_dispatch' |
| - name: Boot ISO in QEMU (smoke test) | ||
| shell: bash | ||
| run: | | ||
| set -euxo pipefail | ||
| bash just_scripts/validate-iso-boot.sh \ |
| wait "${qemu_pid}" 2>/dev/null || true | ||
| fi | ||
| } | ||
| trap kill_qemu INT TERM |
Cloud agent has begun work on Create a plan to val... and will update this pull request as work progresses.
Original prompt
Created from VS Code.