- 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
- 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
- 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
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.
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.
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.
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>
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
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.
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.
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'.
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.
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.
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
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
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
When guest additions are not installed in VirtualBox Vagrant boxes then
the default shared `/vagrant` directory must be set to `rsync`,
otherwise Vagrant fails to start as the shared directory cannot be
mounted with the `vboxfs` filesystem.
Let's expand the schema to allow for `synced-folders` (currently only
accepted under the `virtualbox` variant of the schema) to allow setting
the bare subset of relevant options to configure this from `images`.
Signed-off-by: Simon de Vlieger <supakeen@redhat.com>
Add a test that builds the stage test manifest with the versionlock
plugin (test/stages/dnf4.versionlock/b.json) to export the tree and read
the file created by the tree.
The test then chroots into the tree and dnf versionlock add to create a
file using the actual plugin and compares the created file with the one
created by the stage.