Commit Graph
100 Commits
Author SHA1 Message Date
Lukas Greve 00c4356ff3 Add DEVELOPMENT.md and DEVELOPMENT_QUICK.md
DEVELOPMENT.md comprehensive guide for contributors covering:
- Architecture overview
- Development environment setup
- Fragment development (54 modular .ks files)
- Recipe generation via manifest + templates
- Testing suite (36+ tests)
- CI/CD workflows
- Common workflows + Migration Guide

DEVELOPMENT_QUICK.md quick reference companion
2026-03-24 21:43:01 +01:00
Lukas Greve de961e2dd8 ci: regenerate recipes with %ksappend syntax 2026-03-24 21:29:41 +01:00
Lukas Greve f3031fdf0f fix: update integration tests for new recipe paths 2026-03-24 21:27:47 +01:00
Lukas Greve 5e8afd7d6f feat: Phase 2 (fragment migration), Phase 3 (testing infrastructure), Phase 4 (CI/CD)
Phase 2: Fragment Migration
- Migrated 42 ingredients to 54 fine-grained fragments
- Replaced %include with %ksappend syntax
- Created organized fragment structure (platform/generic-43, platform/generic-rawhide, shared/)
- Updated generator to use fragment paths
- All 16 manifest variants generate successfully

Phase 3: Testing Infrastructure
- Created containerized test runner (tests/container/)
- Added integration test suite (tests/integration/)
- Created golden master fixtures (tests/fixtures/expected_recipes/)
- 41 tests passing (36 unit + 5 integration)
- 54 fragments, 16 recipes validated

Phase 4: CI/CD Integration
- 5 new workflows: validate-recipes, validate-fragments, test-generation, container-tests, build-iso
- Added validation gates before ISO builds
- Works with existing fedora-runner-image
- Local testing support via act_runner
2026-03-24 21:27:29 +01:00
Lukas Greve a0a5de31cc Phase 1: Enhance recipe generator with semantic validation
- Add pykickstart integration for semantic validation
- Support version-specific validation (F42 for Fedora 43, DEVEL for rawhide)
- Track deprecated/removed commands (authconfig, keyboard, langsupport, nfs, parted)
- Add warning for deprecated commands, error for removed commands
- Provide migration suggestions for each deprecated command
- Add --strict flag for CI mode (warnings treated as errors)
- Upgrade validate_recipe_semantic() with enhanced error reporting
- Add _check_deprecated_commands() for command-level validation
- Improve version extraction regex to handle _ and - separators
- Add 5 new test cases for deprecated command detection and version extraction
- Update tests/test_recipe_generator.py with comprehensive validation tests

All 36 tests pass with semantic validation working for generated recipes.
2026-03-24 20:36:53 +01:00
Lukas Greve 1aa264c146 Add recipe generator for automation and DRY recipes
- create generate_recipe.py: CLI tool for generating recipes from templates
- add recipe_templates.yaml: 5 base templates (virtual-desktop, virtual-server, desktop-hypervisor, live-desktop, live-server)
- add recipes_manifest.yaml: 16 recipe variants defined declaratively
- add Makefile: automation targets for generate, validate, test
- add requirements.txt: PyYAML dependency
- add tests/test_recipe_generator.py: 25 pytest tests

This enables:
- Template-based recipe generation with minimal duplication
- One-line variant addition via YAML manifest editing
- Automatic duplicate include prevention
- Ingredient path validation

Generated recipes are committed for reproducibility as per project conventions.
2026-03-24 19:52:34 +01:00
Lukas Greve c1c5fa8d07 Updated dishes, including one with luks encryption 2026-03-24 16:00:32 +01:00
Lukas Greve 404533ddf6 readded pipewire 2026-02-19 19:46:33 +01:00
Lukas Greve 636b8a2f28 updated dishes 2026-02-18 21:34:08 +01:00
Lukas Greve 77787e09b5 switch to just --enable, knowing that --reconfig does not seem to survive a pykickstart flattening 2026-02-18 21:33:56 +01:00
Lukas Greve 88db0b65b1 switch to server-based initial-setup until gnome-initial-setup is fixed 2026-02-18 21:32:53 +01:00
Lukas Greve d4b3f7f236 add gnome-terminal 2026-02-18 21:32:01 +01:00
Lukas Greve a3740d6f1e Improve the script logic
Key improvements made:

Enhanced find_fedora_iso function:

Takes dish_name as parameter to understand which version to select
Parses dish names to identify "rawhide" or numeric versions like "43", "44", "45"
Matches ISO files containing both "Fedora-Everything" and the version information
Falls back gracefully if no exact match is found
Backward compatibility:

Maintained the original find_fedora_iso_old function for fallback behavior
If no matching ISO is found based on dish name, falls back to existing behavior
Smart version matching:

For virtual-desktop_43 → looks for ISO containing "43"
For virtual-desktop_rawhide → looks for ISO containing "Rawhide"
Handles edge cases with proper fallbacks
Improved robustness:

Proper error handling for missing directories
Ensures matched files actually exist and are files (not directories)
Handles multiple version patterns
2026-02-15 19:43:43 +01:00
Lukas Greve 465925d81e new resulting dishes 2026-02-15 19:33:51 +01:00
Lukas Greve 5daa5e91ad new dumb script 2026-02-15 19:33:42 +01:00
Lukas Greve 63e7830c4d rely on dnf groups when possible, to better track upstream. Add new base graphical group.
Add new labwc test ingredient
2026-02-15 19:33:29 +01:00
Lukas Greve 714d27b6dc Merge mandatory and default packages ingredients into core-packages
Rename initial setup desktop to gnome initial setup desktop
2026-02-15 19:31:16 +01:00
Lukas Greve 570d355f1f target Fedora-Everything ISO 2026-02-15 19:28:58 +01:00
Lukas Greve 2e6b0d8498 move to Fedora Everything 2026-02-14 17:46:44 +01:00
Lukas Greve fdae77ef23 just new recipes 2026-02-14 17:46:27 +01:00
Lukas Greve 999ff024d3 add new recipes 2026-02-14 17:46:08 +01:00
Lukas Greve 09dd229908 readd the grub2-mkconfig line until a fix for the desktop is found 2026-02-14 17:44:45 +01:00
Lukas Greve e6ebef1818 fix: it is actually the boot partition that needs to be bigger 2026-02-14 17:44:06 +01:00
Lukas Greve f8ea7db7f0 remove unuseful dishes and update the rest 2026-02-14 17:43:29 +01:00
Lukas Greve 84bcfecd12 fix regression 2026-01-31 15:24:45 +01:00
Lukas Greve c102ab48f2 remove the hypervisor part 2025-12-14 10:09:16 +01:00
Lukas Greve 854ce5d009 new devel recipes 2025-12-14 09:49:37 +01:00
Lukas Greve c39e9b7803 recreate development-ready virtual machine recipes 2025-12-14 09:47:06 +01:00
Lukas Greve a5cbd39b31 default to rawhide instead of fedora 43 2025-12-13 14:40:47 +01:00
Lukas Greve 05cf28c11a Add local ISO detection functionality to deploy-distro.sh 2025-12-11 21:56:56 +01:00
Lukas Greve e018870d0e updated recipes 2025-12-11 20:50:24 +01:00
Lukas Greve 0c76e7626d make it even more insecure, to make it easier to debug 2025-12-11 20:50:13 +01:00
Lukas Greve 28c390f1b4 remove the post section to speed installation process 2025-12-11 20:49:29 +01:00
Lukas Greve ebd35f0b1f virtual dishes are for development-only 2025-12-10 21:31:31 +01:00
Lukas Greve 6832142907 add allow ssh incoming connection 2025-12-10 21:31:01 +01:00
Lukas Greve eae12100a8 correct an awful regression. SELinux is either disabled or in enforcing mode. The enable switch does not work 2025-12-10 21:30:19 +01:00
Lukas Greve bc5f156cd9 All non-virtual dishes / recipes are meant to be shipped with sane security defaults 2025-12-10 21:29:25 +01:00
Lukas Greve 8245bdf3b9 revert back gitignore to include dishes 2025-12-10 21:27:45 +01:00
Lukas Greve cabebbcedf add fast_commit and encrypt filesystem feature for ext4. Encrypt is a prerequisite for fscrypt support. Fast_commit is a faster journaling method. 2025-12-10 17:17:39 +01:00
Lukas Greve b028260090 weak security to enable easier debugging 2025-12-09 22:33:51 +01:00
Lukas Greve 1fbe496b6a the proper syntax for firstboot enabling 2025-12-09 22:33:15 +01:00
Lukas Greve ae4ffdc64d updated gitignore. Let's not track changes to complete kickstart files. It goes in the way 2025-12-09 22:32:40 +01:00
Lukas Greve 35deff93b3 tweak the security settings, to allow root login for debuging purposes (i.e. when initial-setup does not work) 2025-12-09 22:20:47 +01:00
Lukas Greve a186c60e9a add these changes to nano branch 2025-12-09 17:03:18 +01:00
Lukas Greve 9400b239f8 test new ingredient.
Now not working. The idea would be to deploy a system from a squashfs.img image, to avoid having to redownload all packages
2025-11-21 11:04:41 +01:00
Lukas Greve 740557564d test new workflow to release ISO 2025-11-17 16:36:53 +01:00
Lukas Greve f612842e50 explicitly mention fedora 43 2025-11-13 21:28:28 +01:00
Lukas Greve 37c8c925dd updated recipes version 2025-11-13 20:31:05 +01:00
Lukas Greve b721ec7b59 bump to fedora 43 2025-11-13 20:30:11 +01:00
Lukas Greve ab9aa58eb2 fix what looks like an embarassing regression
we need to specify arch and version, or have env  variable somehwhere do it for us. As of now, it seems safer to hardcode it.
2025-11-13 20:29:55 +01:00
Lukas Greve 7fced10c52 switch local to Zurich 2025-11-13 20:05:22 +01:00
Lukas Greve 59c82dd9c3 improve comment 2025-11-13 20:05:07 +01:00
Lukas Greve 461936a841 add some comment 2025-11-13 20:04:49 +01:00
Lukas Greve 7c3571f8e6 update comment to match reality 2025-10-16 12:08:39 +02:00
Lukas Greve 7ffc71043d reverting back to GRUB 2025-10-15 14:47:02 +02:00
Lukas Greve a8dcf4011c moving to no-secure-boot, and more generally a simpler virtual machine definition 2025-10-15 14:46:40 +02:00
Lukas Greve 28b3e927a6 fix comment 2025-10-10 12:58:26 +02:00
Lukas Greve 06caf5b3c7 increase size of efi partition and explicitly list mbr for the location of the bootloader 2025-10-10 12:58:09 +02:00
Lukas Greve 5da0303cf5 add Spice and listen to all interfaces by default 2025-10-10 12:07:52 +02:00
Lukas Greve de48f21335 remove grub conf 2025-10-07 15:35:07 +02:00
Lukas Greve 7ae6714da1 remove grub conf 2025-10-07 15:34:56 +02:00
Lukas Greve 246fba3efa switch to systemd-boot 2025-09-07 20:17:05 +02:00
Lukas Greve 2e56372e6d new systemd-boot ingredient for live systems 2025-09-07 20:15:20 +02:00
Lukas Greve 515950daad move to root directory 2025-09-05 18:04:55 +02:00
Lukas Greve 1fecc5ea1b adjust list of packages
packages related to libvirt are explicitly picked
2025-09-05 18:04:01 +02:00
Lukas Greve 8c2b118c8e add curl 2025-07-13 20:53:28 +02:00
Lukas Greve dd41bcb66b refine the package selection 2025-07-13 20:53:21 +02:00
Lukas Greve e9e70c6ce3 add gitignore file, excluding aider 2025-07-13 20:53:09 +02:00
Lukas Greve 6a043dcd3d move and rename list of ingredients 2025-07-01 21:28:50 +02:00
Lukas Greve cf3ff84a6d new script to install prerequisites on common Linux distribution 2025-07-01 21:28:33 +02:00
Lukas Greve 46bbe1d5e9 add a iommu device in the automated VM deployment and set memballon to disable 2025-06-17 14:51:14 +02:00
Lukas Greve b98f41512d restore variables for setting specific path and networking for session and system URI 2025-06-15 17:14:31 +02:00
Lukas Greve 8c96623ad7 make selection or URI options for qemu more robust. Allow the user to just use Enter
Only allow selection of files that starts with virtual (this script is only used to deploy virtual machine)

Reworked some comments
2025-06-15 14:32:46 +02:00
Lukas Greve 358e67a041 remove whitespace 2025-06-15 14:31:00 +02:00
Lukas Greve 3b4724cf86 Removing information to the user when script goes through. 2025-06-15 14:30:48 +02:00
Lukas Greve 684a49af14 no need to echo when it succeeds 2025-06-15 14:30:00 +02:00
Lukas Greve e1207278a3 Add possibility to pick URI, from session to system 2025-06-08 11:51:15 +02:00
Lukas Greve 00f40553b5 Document th script 2025-06-04 20:00:08 +02:00
Lukas Greve 0316eff669 rename file 2025-05-29 17:50:29 +02:00
Lukas Greve c458ab4b5c add ability to pick memory and disk size 2025-05-29 17:49:30 +02:00
Lukas Greve 02f2a131bf add pipewire and gnome-control-center to desktop editions 2025-05-29 17:48:59 +02:00
Lukas Greve 6cfad2d5eb move file 2025-05-29 17:48:37 +02:00
Lukas Greve 5c7a5713b9 bump hardware requirements, change default network, correct paths 2025-05-22 18:14:47 +02:00
Lukas Greve 63456e0e16 bump hardware requirements 2025-05-22 18:10:43 +02:00
Lukas Greve 01326af9d8 fix bug related to path
the extra-args should refer to the file, irrespective of its location.
2025-05-22 16:48:07 +02:00
Lukas Greve be2f5cf7a2 rename code of conduct 2025-05-21 18:18:50 +02:00
Lukas Greve 66773b8e23 change where logs are stored 2025-05-21 17:50:58 +02:00
Lukas Greve 4bd6294efe new dish 2025-05-21 17:50:40 +02:00
Lukas Greve 7d9af8f39e rename code of conduct file for consistency 2025-05-21 17:40:51 +02:00
Lukas Greve 8c1c11fda7 add reference to the script 2025-05-21 17:36:12 +02:00
Lukas Greve 3fafb78838 new script / wrapper around virt-install 2025-05-21 17:35:57 +02:00
Lukas Greve 1dfc10b5c9 Add requirements 2025-05-19 19:59:01 +02:00
Lukas Greve 6089cb118a Add new explanation related to ingredients 2025-05-19 19:56:03 +02:00
Lukas Greve fee6d59831 move explanation of list of ingredients into the README 2025-05-19 19:55:09 +02:00
Lukas Greve add9bd8a09 Tiny change, add FAQ section 2025-05-19 16:16:18 +02:00
Lukas Greve e5ec5d9380 Revamped readme 2025-05-19 16:07:53 +02:00
Lukas Greve b56f49f5d6 new versions of dishes
should fix name resolution issues, among other things
2025-01-09 15:52:57 +01:00
Lukas Greve 56c6b95a9a increase size of boot partition to 512MB 2025-01-09 15:52:13 +01:00
Lukas Greve dcd8496069 remove neofetch, fix name resolution
explictly enabling systemd-resolved, to solve name resolution failure on new installations
remove neofetch and change some comments
2025-01-09 15:51:53 +01:00
Lukas 6a7f48c47e new dish: live desktop 2022-02-20 10:21:18 +01:00