Commit graph

3677 commits

Author SHA1 Message Date
robojerk
0e9754eec1 Update Debian support policy: Debian 13+ (Trixie and newer) only
Some checks are pending
Checks / Spelling (push) Waiting to run
Checks / Python Linters (push) Waiting to run
Checks / Shell Linters (push) Waiting to run
Checks / 📦 Packit config lint (push) Waiting to run
Checks / 🔍 Check for valid snapshot urls (push) Waiting to run
Checks / 🔍 Check JSON files for formatting consistency (push) Waiting to run
Generate / Documentation (push) Waiting to run
Generate / Test Data (push) Waiting to run
Tests / Unittest (push) Waiting to run
Tests / Assembler test (legacy) (push) Waiting to run
Tests / Smoke run: unittest as normal user on default runner (push) Waiting to run
2025-08-26 16:02:01 -07:00
robojerk
eb18f1a514 Add dynamic apt-cacher-ng configuration system for collaborators
Some checks are pending
Checks / Spelling (push) Waiting to run
Checks / Python Linters (push) Waiting to run
Checks / Shell Linters (push) Waiting to run
Checks / 📦 Packit config lint (push) Waiting to run
Checks / 🔍 Check for valid snapshot urls (push) Waiting to run
Checks / 🔍 Check JSON files for formatting consistency (push) Waiting to run
Generate / Documentation (push) Waiting to run
Generate / Test Data (push) Waiting to run
Tests / Unittest (push) Waiting to run
Tests / Assembler test (legacy) (push) Waiting to run
Tests / Smoke run: unittest as normal user on default runner (push) Waiting to run
2025-08-26 15:52:43 -07:00
robojerk
39abab18f7 Update .gitignore with comprehensive patterns for Python projects and build artifacts
Some checks are pending
Checks / Spelling (push) Waiting to run
Checks / Python Linters (push) Waiting to run
Checks / Shell Linters (push) Waiting to run
Checks / 📦 Packit config lint (push) Waiting to run
Checks / 🔍 Check for valid snapshot urls (push) Waiting to run
Checks / 🔍 Check JSON files for formatting consistency (push) Waiting to run
Generate / Documentation (push) Waiting to run
Generate / Test Data (push) Waiting to run
Tests / Unittest (push) Waiting to run
Tests / Assembler test (legacy) (push) Waiting to run
Tests / Smoke run: unittest as normal user on default runner (push) Waiting to run
2025-08-26 15:42:43 -07:00
robojerk
39e08b32ec Update todo.txt: Mark reorganization as complete
Some checks are pending
Checks / Spelling (push) Waiting to run
Checks / Python Linters (push) Waiting to run
Checks / Shell Linters (push) Waiting to run
Checks / 📦 Packit config lint (push) Waiting to run
Checks / 🔍 Check for valid snapshot urls (push) Waiting to run
Checks / 🔍 Check JSON files for formatting consistency (push) Waiting to run
Generate / Documentation (push) Waiting to run
Generate / Test Data (push) Waiting to run
Tests / Unittest (push) Waiting to run
Tests / Assembler test (legacy) (push) Waiting to run
Tests / Smoke run: unittest as normal user on default runner (push) Waiting to run
2025-08-26 15:39:40 -07:00
robojerk
56f029cbc0 Complete file structure reorganization for 1:1 osbuild compatibility 2025-08-26 15:38:59 -07:00
robojerk
61e7caaddb Did stuff
Some checks are pending
Checks / Spelling (push) Waiting to run
Checks / Python Linters (push) Waiting to run
Checks / Shell Linters (push) Waiting to run
Checks / 📦 Packit config lint (push) Waiting to run
Checks / 🔍 Check for valid snapshot urls (push) Waiting to run
Checks / 🔍 Check JSON files for formatting consistency (push) Waiting to run
Generate / Documentation (push) Waiting to run
Generate / Test Data (push) Waiting to run
Tests / Unittest (push) Waiting to run
Tests / Assembler test (legacy) (push) Waiting to run
Tests / Smoke run: unittest as normal user on default runner (push) Waiting to run
2025-08-26 11:52:32 -07:00
robojerk
502e1469ae Move composer scripts to root directory and add comprehensive Debian Atomic support
Some checks failed
Checks / Spelling (push) Has been cancelled
Checks / Python Linters (push) Has been cancelled
Checks / Shell Linters (push) Has been cancelled
Checks / 📦 Packit config lint (push) Has been cancelled
Checks / 🔍 Check for valid snapshot urls (push) Has been cancelled
Checks / 🔍 Check JSON files for formatting consistency (push) Has been cancelled
Generate / Documentation (push) Has been cancelled
Generate / Test Data (push) Has been cancelled
Tests / Unittest (push) Has been cancelled
Tests / Assembler test (legacy) (push) Has been cancelled
Tests / Smoke run: unittest as normal user on default runner (push) Has been cancelled
2025-08-23 08:02:45 -07:00
robojerk
3f639d537a Start OSBuild Composer integration testing: organize test files, create integration test script 2025-08-22 21:27:21 -07:00
robojerk
4ec9eb38f6 Complete documentation updates: architecture, user guide, deployment, troubleshooting 2025-08-22 21:21:50 -07:00
robojerk
bfc473b8e7 Complete performance and stability testing milestones
Some checks are pending
Checks / Spelling (push) Waiting to run
Checks / Python Linters (push) Waiting to run
Checks / Shell Linters (push) Waiting to run
Checks / 📦 Packit config lint (push) Waiting to run
Checks / 🔍 Check for valid snapshot urls (push) Waiting to run
Checks / 🔍 Check JSON files for formatting consistency (push) Waiting to run
Generate / Documentation (push) Waiting to run
Generate / Test Data (push) Waiting to run
Tests / Unittest (push) Waiting to run
Tests / Assembler test (legacy) (push) Waiting to run
Tests / Smoke run: unittest as normal user on default runner (push) Waiting to run
- Add performance testing and optimization
- Add stress testing with multiple concurrent builds
- Add bug fixing and stability improvements
- Mark multiple TODO items as complete
- Maintain 1:1 OSBuild compatibility throughout
2025-08-22 21:11:12 -07:00
robojerk
6b2fee3f9c Complete output generation testing milestones
Some checks are pending
Checks / Spelling (push) Waiting to run
Checks / Python Linters (push) Waiting to run
Checks / Shell Linters (push) Waiting to run
Checks / 📦 Packit config lint (push) Waiting to run
Checks / 🔍 Check for valid snapshot urls (push) Waiting to run
Checks / 🔍 Check JSON files for formatting consistency (push) Waiting to run
Generate / Documentation (push) Waiting to run
Generate / Test Data (push) Waiting to run
Tests / Unittest (push) Waiting to run
Tests / Assembler test (legacy) (push) Waiting to run
Tests / Smoke run: unittest as normal user on default runner (push) Waiting to run
- Add bootc container creation testing and validation
- Add multi-format output generation testing
- Add image bootability testing and validation
- Mark multiple TODO items as complete
- Maintain 1:1 OSBuild compatibility throughout
2025-08-22 21:05:51 -07:00
robojerk
abea5a1380 Complete major testing milestones for Debian atomic system
Some checks are pending
Checks / Spelling (push) Waiting to run
Checks / Python Linters (push) Waiting to run
Checks / Shell Linters (push) Waiting to run
Checks / 📦 Packit config lint (push) Waiting to run
Checks / 🔍 Check for valid snapshot urls (push) Waiting to run
Checks / 🔍 Check JSON files for formatting consistency (push) Waiting to run
Generate / Documentation (push) Waiting to run
Generate / Test Data (push) Waiting to run
Tests / Unittest (push) Waiting to run
Tests / Assembler test (legacy) (push) Waiting to run
Tests / Smoke run: unittest as normal user on default runner (push) Waiting to run
- Add multi-stage workflow testing and validation
- Add error handling and recovery testing
- Add image generation testing (ISO, QCOW2, RAW)
- Validate complete build pipeline end-to-end
- Mark multiple TODO items as complete
- Maintain 1:1 OSBuild compatibility throughout
2025-08-22 21:00:14 -07:00
robojerk
b689f3e868 Document OSBuild architecture and enhance debootstrap stage
Some checks are pending
Checks / Spelling (push) Waiting to run
Checks / Python Linters (push) Waiting to run
Checks / Shell Linters (push) Waiting to run
Checks / 📦 Packit config lint (push) Waiting to run
Checks / 🔍 Check for valid snapshot urls (push) Waiting to run
Checks / 🔍 Check JSON files for formatting consistency (push) Waiting to run
Generate / Documentation (push) Waiting to run
Generate / Test Data (push) Waiting to run
Tests / Unittest (push) Waiting to run
Tests / Assembler test (legacy) (push) Waiting to run
Tests / Smoke run: unittest as normal user on default runner (push) Waiting to run
- Create comprehensive OSBuild architecture documentation
- Document buildroot isolation and object store patterns
- Enhance debootstrap stage to follow OSBuild patterns exactly
- Add proper metadata generation and filesystem mounting
- Maintain 1:1 compatibility with OSBuild design
- Mark foundational architecture tasks as complete
2025-08-22 20:49:53 -07:00
robojerk
01562657fb Implement build lifecycle testing and environment management
Some checks are pending
Checks / Spelling (push) Waiting to run
Checks / Python Linters (push) Waiting to run
Checks / Shell Linters (push) Waiting to run
Checks / 📦 Packit config lint (push) Waiting to run
Checks / 🔍 Check for valid snapshot urls (push) Waiting to run
Checks / 🔍 Check JSON files for formatting consistency (push) Waiting to run
Generate / Documentation (push) Waiting to run
Generate / Test Data (push) Waiting to run
Tests / Unittest (push) Waiting to run
Tests / Assembler test (legacy) (push) Waiting to run
Tests / Smoke run: unittest as normal user on default runner (push) Waiting to run
- Add comprehensive build lifecycle test script
- Create build environment management system with isolation
- Implement host health monitoring and resource tracking
- Add automatic environment cleanup and reuse policies
- Create OSBuild integration module for pipeline management
- Fix attribute references in integration code
- All components tested and working
2025-08-22 20:46:01 -07:00
robojerk
48c31fa24f Implement enhanced build orchestration and artifact management
Some checks are pending
Checks / Spelling (push) Waiting to run
Checks / Python Linters (push) Waiting to run
Checks / Shell Linters (push) Waiting to run
Checks / 📦 Packit config lint (push) Waiting to run
Checks / 🔍 Check for valid snapshot urls (push) Waiting to run
Checks / 🔍 Check JSON files for formatting consistency (push) Waiting to run
Generate / Documentation (push) Waiting to run
Generate / Test Data (push) Waiting to run
Tests / Unittest (push) Waiting to run
Tests / Assembler test (legacy) (push) Waiting to run
Tests / Smoke run: unittest as normal user on default runner (push) Waiting to run
- Add build status tracking with state machine
- Implement build logging and monitoring system
- Add build progress tracking and cancellation support
- Create artifact management system with SQLite database
- Fix stage file extensions for proper Python imports
- Enhance resource allocation with actual resource tracking
- Add comprehensive testing for all components
2025-08-22 18:45:17 -07:00
robojerk
8767c20940 Move Debian Forge tools and scripts to root directory
Some checks are pending
Checks / Spelling (push) Waiting to run
Checks / Python Linters (push) Waiting to run
Checks / Shell Linters (push) Waiting to run
Checks / 📦 Packit config lint (push) Waiting to run
Checks / 🔍 Check for valid snapshot urls (push) Waiting to run
Checks / 🔍 Check JSON files for formatting consistency (push) Waiting to run
Generate / Documentation (push) Waiting to run
Generate / Test Data (push) Waiting to run
Tests / Unittest (push) Waiting to run
Tests / Assembler test (legacy) (push) Waiting to run
Tests / Smoke run: unittest as normal user on default runner (push) Waiting to run
2025-08-22 18:31:21 -07:00
robojerk
6a744c6c5b Add sbuild and debian source stages for Debian package building and source management
Some checks are pending
Checks / Spelling (push) Waiting to run
Checks / Python Linters (push) Waiting to run
Checks / Shell Linters (push) Waiting to run
Checks / 📦 Packit config lint (push) Waiting to run
Checks / 🔍 Check for valid snapshot urls (push) Waiting to run
Checks / 🔍 Check JSON files for formatting consistency (push) Waiting to run
Generate / Documentation (push) Waiting to run
Generate / Test Data (push) Waiting to run
Tests / Unittest (push) Waiting to run
Tests / Assembler test (legacy) (push) Waiting to run
Tests / Smoke run: unittest as normal user on default runner (push) Waiting to run
2025-08-22 18:22:25 -07:00
robojerk
6a17af5a62 Add Debian apt config and ostree deploy stages, update apt-cacher-ng to 192.168.1.101:3142 2025-08-22 18:18:48 -07:00
robojerk
85e0c04d21 Add apt-cacher-ng support to Debian stages for improved build performance 2025-08-22 18:14:00 -07:00
robojerk
31162116f8 Add Debian-specific OSBuild stages: apt, debootstrap, ostree-commit
Some checks are pending
Checks / Spelling (push) Waiting to run
Checks / Python Linters (push) Waiting to run
Checks / Shell Linters (push) Waiting to run
Checks / 📦 Packit config lint (push) Waiting to run
Checks / 🔍 Check for valid snapshot urls (push) Waiting to run
Checks / 🔍 Check JSON files for formatting consistency (push) Waiting to run
Generate / Documentation (push) Waiting to run
Generate / Test Data (push) Waiting to run
Tests / Unittest (push) Waiting to run
Tests / Assembler test (legacy) (push) Waiting to run
Tests / Smoke run: unittest as normal user on default runner (push) Waiting to run
2025-08-22 18:11:39 -07:00
Lukas Zapletal
3e37ad3b92 monitor: add duration to JSON logger
Some checks are pending
Checks / Spelling (push) Waiting to run
Checks / Python Linters (push) Waiting to run
Checks / Shell Linters (push) Waiting to run
Checks / 📦 Packit config lint (push) Waiting to run
Checks / 🔍 Check for valid snapshot urls (push) Waiting to run
Checks / 🔍 Check JSON files for formatting consistency (push) Waiting to run
Generate / Documentation (push) Waiting to run
Generate / Test Data (push) Waiting to run
Tests / Unittest (push) Waiting to run
Tests / Assembler test (legacy) (push) Waiting to run
Tests / Smoke run: unittest as normal user on default runner (push) Waiting to run
Although duration of each stage could be calculated from the start and
end timestamps, it is more convenient to have it directly in the log
entry. This way we can avoid calculating it in the client code.
2025-08-22 09:26:50 +02:00
Lukas Zapletal
5088c0ee69 monitor: fix duration calculation
When fully cached manifest is used, the duration used to print an
incorrect value of 55 years:

    python3 -m osbuild --libdir . ./test/data/manifests/fedora-boot.json
    ⏱  Duration: 1753191578s

This patch fixes the duration calculation to use the correct timestamp
from the manifest by using monotonic timer instead. Additionally, it
prints nothing when there was no module executed. Finally, it improves
the formatting of the duration output.
2025-08-22 09:26:50 +02:00
Lukas Zapletal
285a260726 readme: add missing deps and local dev section
Adds missing dependencies for `make rpm` target in the README.

Adds a section to the README for local development instructions.
2025-08-22 09:26:50 +02:00
Jonathan Lebon
b63306616a stages/coreos.live-artifacts: rework volume ID handling
In https://github.com/osbuild/osbuild/pull/2148, we changed the logic to
generate the volume ID from the data in `/usr/lib/os-release` to sever
the reliance on metadata in the embedded treefile that will no longer
exist.

This had no effect in FCOS, but had an effect in RHCOS, which
went from a volume ID of `rhcos-...` to `rhel-coreos-...`.
This was considered harmless at the time, but in fact ended
up affecting the OpenShift Assisted Image Service. See e.g.
https://github.com/openshift/assisted-image-service/pull/477 which
attempted to adapt that code. But in the end, it felt safer and less
work to just revert back to the previous volume ID. So here we are.

But we still don't want to go back to using the embedded treefile.
Instead, we now have access to the OS name to use as a label on the
container image. This label gets serialized into the aleph during the
creation of the metal image (via the `org.osbuild.ostree.aleph` stage)
which we have access here when mounting the metal image via loopback.

So pick it up from there and use that. But in case it's missing,
fallback to the previous logic rather than hard fail to make this easier
to ratchet in.
2025-08-22 01:55:45 +02:00
Simon de Vlieger
9e85ec6f85 spec: buildrequire setuptools
Fedora is changing (some) things related to Python packaging. It seems
setuptools is no longer a generated BuildRequire by default so let's
explicitly add it.

Signed-off-by: Simon de Vlieger <supakeen@redhat.com>
2025-08-21 15:56:02 -07:00
Michael Vogt
16f40b01d3 stages: extend test_bootc_install_to_fs test for new options
The org.osbuild.bootc.install_to_fs stage got a few new
options in PR#2152. Add them to our tests too.
2025-08-19 01:10:18 +02:00
schutzbot
564d5dcf6f Schutzfile: Update images dependency ref to latest 2025-08-18 13:11:12 +02:00
schutzbot
3c676700b8 schutzfile: Update snapshots to 20250815 2025-08-15 18:50:52 +02:00
jbtrystram
e930eeb519 stages/bootc.install: make boot and root mount spec customizable
Allow passing custom mount specs for boot and root. Optional fields.
2025-08-15 13:01:44 +02:00
jbtrystram
825045a914 stages/bootc.install-to-filesystem: parametrize stateroot value
This adds an extra option to make the stateroot name customizable.

Fixes https://github.com/osbuild/osbuild/issues/2151
2025-08-15 13:01:44 +02:00
Josue David Hernandez Gutierrez
60ec19f692 osbuild/solver/dnf.py: Add support for DNF variables for osbuild repos
Signed-off-by: Josue David Hernandez Gutierrez <josue.d.hernandez@oracle.com>
2025-08-13 15:42:00 +02:00
Josue David Hernandez Gutierrez
6c19fd93ba tools/test/test_depsolve.py: Fix baseurl to be a list
Signed-off-by: Josue David Hernandez Gutierrez <josue.d.hernandez@oracle.com>
2025-08-13 15:42:00 +02:00
schutzbot
d9af977f78 Post release version bump
[skip ci]
2025-08-13 08:37:21 +00:00
Achilleas Koutsou
e31084e520 stages/tar: add --numeric-owner option
The numeric-owner option omits the inclusion of user and group names in
the archive metadata.  This is often desirable since name and group
mappings can change the ownership of files during extraction.

The test uses the tarfile module to check that the uname and gname
attributes in the tar archive itself are empty, which is the intended
effect of enabling numeric-owner [1].

RHEL-102854

[1] https://www.gnu.org/software/tar//manual/html_section/Attributes.html
2025-08-12 19:44:14 +02:00
schutzbot
77701f6f1d Schutzfile: Update images dependency ref to latest 2025-08-11 14:58:24 +02:00
schutzbot
582195bb90 Schutzfile: Update images dependency ref to latest 2025-08-05 21:20:32 +02:00
schutzbot
e0d18c2d81 schutzfile: Update snapshots to 20250730 2025-07-31 10:26:56 +02:00
Achilleas Koutsou
7c30cf7280 test/data: update test manifests
Update test manifests by running tools/update-test-manifests.
This bumps the snapshot date for all CentOS Stream 9 test manifests,
which currently is only the authconfig and dnf4.versionlock.
2025-07-31 00:53:54 +02:00
Achilleas Koutsou
e253f7c8b9 tools: new script: update-test-manifests
Add a new script that parses the Schutzfile for repository snapshot
dates and updates any vars.ipp file found in test/data/manifests/ to
match the snapshot date for the same distro.
After modifying the vars.ipp files, it runs `sudo make test-data` to
regenerate all test manifests and then, for each modified manifest,
generates the new diff.json for that stage test.

A few things to note:
- The distro detection for each vars.ipp file is partially
  heuristic-based.  It assumes that the first component of the filename
  is the distribution name.  This is true for our current files, but
  it's not a hard rule.  The script will fail with an error if the first
  component of a filename is not a valid distro name.
- The script uses ruamel.yaml instead of the standard pyyaml.
  ruamel.yaml is much better at preserving the structure of the original
  yaml file during a load-modify-dump and provides more ways of
  controlling indentation and wrapping.  The package will need to be
  installed in any runner that calls this script.
- This script will eventually become part of a GitHub workflow that is
  dispatched from the rpmrepo snapshot creation job.  When that happens,
  it might be changed to take snapshot dates as arguments rather than
  reading them from the Schutzfile.
2025-07-31 00:53:54 +02:00
Achilleas Koutsou
5d861870f8 test/data/manifests: fix module-platform-id
A couple of CentOS Stream 9 manifests were setting 'el9' as their
module-platform-id, making the depsolver complain.
Fixed to the correct 'platform:el9'.
2025-07-31 00:53:54 +02:00
schutzbot
7124e6dc64 Post release version bump
[skip ci]
2025-07-30 08:39:20 +00:00
Brian C. Lane
e3236a8b34 org.osbuild.grub2.iso.legacy: Add support for default menu selection
Currently the grub2 menu defaults to the first entry. This adds support
for setting the default to a later entry. The default in the official
boot.iso is entry 1 -- booting with the iso checksum check.

This includes a test for the new behavior.
2025-07-29 10:09:14 -07:00
Brian C. Lane
f49621ce44 org.osbuild.grub2.iso: Add support for default menu selection
Currently the grub2 menu defaults to the first entry. This adds support
for setting the default to a later entry. The default in the official
boot.iso is entry 1 -- booting with the iso checksum check.

This includes a test for the new behavior.
2025-07-29 10:09:14 -07:00
schutzbot
841e89fe08 Schutzfile: Update images dependency ref to latest 2025-07-29 11:52:02 +02:00
jbtrystram
f4698da5bb stages/ignition: parametrize the path to boot
Allow passing a mount to specify where to write the igntion.firstboot
file.
This keeps the default `tree:///` value to not break existing stages.
2025-07-28 21:14:02 +02:00
Brian C. Lane
de22369919 org.osbuild.isolinux: Add support for optional fips menu
On RHEL 9.7+ and on RHEL 10.1+ we need to be able to include a menu that
boots the installer environment with fips=1 on the cmdline. This adds an
optional menu entry controlled by the "fips" boolean.

This also includes a new test for the menus with and without fips
included.

Related: RHEL-104075
2025-07-25 22:52:19 +02:00
Brian C. Lane
d085681911 org.osbuild.grub2.iso.legacy: Add support for optional fips menu
On RHEL 9.7+ and on RHEL 10.1+ we need to be able to include a menu that
boots the installer environment with fips=1 on the cmdline. This adds an
optional menu entry controlled by the "fips" boolean.

This also includes a test for the new behavior.

Related: RHEL-104075
2025-07-25 22:52:19 +02:00
Brian C. Lane
9a563f8306 org.osbuild.grub2.iso: Add support for optional fips menu
On RHEL 9.7+ and on RHEL 10.1+ we need to be able to include a menu that
boots the installer environment with fips=1 on the cmdline. This adds an
optional menu entry controlled by the "fips" boolean.

This also includes a new test for the menus with and without fips
included.

Related: RHEL-104075
2025-07-25 22:52:19 +02:00
schutzbot
2344226178 Schutzfile: Update images dependency ref to latest 2025-07-24 08:47:16 +02:00
Bipin B Narayan
7593b65dc7 live-artifacts: read os name from /usr/lib/os-release
With importing ociarchive, the treefile.json doesn't contain osname.
2025-07-16 14:43:18 +02:00