Every image type defines a list of build pipeline names and a list of
payload pipeline names. These should match the names of the pipelines
that will exist in the manifest when it's generated. They should match
exactly, otherwise issues can occur when reading the metadata from an
osbuild result. The cloud API needs to know the names of the pipelines
and specifically the name of the build pipeline and the payload pipeline
in order to differentiated between build and payload packages in the
metadata.
This new test generates every manifest, parses it into a minimal struct,
and compares the pipeline names with the ones reported statically on the
image type definition.
The format-request-map is updated to remove the override for the
customized qcow for rhel-8.
The rhel-8 manifests are now identical to the rhel-87 counterparts.
- repositories/: add google-compute-engine and google-cloud-sdk repos to
package repositories.
- test/data/repositories/: add rt, rhui, and rhui-azure to test
repositories.
- test-case-generators/: update unversioned rhel-8 repos to point to
RHEL 8.7 snapshots.
Image types no longer report their chains. Instead, pipelines report
their packages and chains and blueprint packages are added to the
workload.
The distro.ImageType interface retains the PackageSetsChains() methods
for RHEL 7 until that is rewritten as well.
The osbuild-dnf-json-test doesn't use the PackageSetsChains() method
anymore. Instead, since it only test the centos-8 qcow2 image, it
hardcodes the expected package set names.
Release repositories (in repositories/) for RHEL 9 are the CDN repos
without a minor release, which should always track GA.
Test repositories (in test/data/ and test-case-generators/) point to
RHEL 9.1, the current GA.
The python3-toml package is called python3-pytoml in RHEL 8, so the name
must be replaced before depsolving. The package is defined in
manifest/os.go which does not have access to the distribution name or
version.
This solution is a temporary workaround. The future solution should
depend on distributions resolving package names based on required
features.
Override the kernel-rt test case for CS8 with kernel-rt-core.
The kernel-rt package resolves to kernel-rt-core (no kernel-rt
metapackage exists).
More details can be found at https://github.com/osbuild/osbuild-composer/issues/3211
Using the same pipeline functions as Fedora and RHEL 9 and copied the
image function from RHEL 9. The most notable change is the replacment
of the deprecated bootiso.mono stage with the more granular stages, just
like with the image installer.
Using the same pipeline functions as Fedora and RHEL 9 and copied the
image function from RHEL 9. The most notable change is the replacement
of the deprecated bootiso.mono stage with the more granular stages.
Using the same pipeline code as RHEL 9 and Fedora introduces the
following changes to the image:
- ostree.config: moved and uses the stage mount instead of the old
stage-specific options.
- lock root password like we do in Fedora and RHEL 9.
- set keymap to us and locale to C.UTF-8 like in Fedora and RHEL 9.
- grub2 contains kernel options and unified set to true. This stage
also now uses the ostree mount options to set up the deployment when
running.
The gceX86 platform embeds the X86 platform and overrides the
GetPackages() method to exclude the grub2-pc package.
The gce image is built as UEFI only, does not include 'grub2-pc', but we
enable BIOS in the platform config for all the other side-effects: grub
config options and grub2.inst stage.
See the image type documentation for more information:
d12d9674d6/image-types/rhel8/google-gce.md (rhel-8-byosrhui--rhel-9-byos-image-differences-compared-to-googles-image)
Changes:
- Remove unneeded RPMs from the build root.
- /usr/bin/tar removed from the selinux stage.
- Changed order of the rhsm stage. This will not affect functionality.
Changes:
- Removed unneeded RPMs from the build root.
- /usr/bin/tar removed from selinux stage.
- Changed order of the rhsm stage. This will not affect functionality.
Changes:
- Removed unneeded RPMs from the build root.
- /usr/bin/tar removed from selinux stage: only added on-demand when tar
is installed and used in a pipeline.
- s390x kernel options: debug added when specified in customizations.
Previously, kernel customizations were ignored for s390x.
Add image, environment, and compression to the imageType struct.
Define two new methods: PackageSetsNew() and ManifestNew()
These get called by the corresponding base methods PackageSets() and
Manifest() when imageType.image is defined. They will serve to
transition images to the new framework while also supporting the old
until all image types are updated.
Continuing image type splitting.
Constructor for qcow2 type requires the distribution object to determine
whether to add RHSM to the image config (RHEL only).
Start splitting image type definitions into separate files by logical
groups (mostly by footprint and cloud platform) for easier navigation,
like we did for rhel9.
Split AMI and Edge image types; the rest will follow in separate
commits.
Image specific package sets are defined in the file for the image type
grouping instead of the package_sets file.
A notable difference with the way it was done in rhel9 is that every
image type is defined in a function rather than a global where possible
and a function when distro version specific configuration is needed.
This is done for consistency and the change will likely be done in the
other distributions as well.
Also, instead of passing only required values to the image type
constructor (for example, osVersion and a RHEL boolean), we pass the
whole distribution object and each constructor can read whatever
information it needs.
Add platform attribute to imageType.
Create platform configurations for each image type, copied from RHEL 9.
Currently this has no effect on the image definition / manifest.
The host distro object was identical to the regular distro objects for a
while now. The constructors in the registry have been aliases to the
base constructors for a long time.
- Deleted all HostDistro constructors from the distributions.
- Changed the supported distro list to only contain base constructor
functions.
- The host distro in the distro registry is a copy of the base distro
that matches the host and does not call a separate constructor.
Inline the distribution structs in the common constructor.
Make the same changes that were made to RHEL 8:
- Remove major version argument: it's always 9
- Make the default constructor New() create the default minor version
and rename it to plain RHEL 9.
The distroregistry now contains both rhel-9 and rhel-90, which point to
the same configuration but with different names.
The default rhel-9 should be updated to be an alias to rhel-91, the
current GA.
Update the implementation of the distro.Distro interface to match the
one in RHEL 9 and Fedora. The main change is that the runner is a
runner.Runner and not a string.
The distroMap is replaced by a switch that initialises the distribution
struct strings based on the minor version number.
The default minor version, created with rhel8.New(), creates a copy of
RHEL 8.6 and renames it to "rhel8".