mirror of
https://github.com/xcat2/xcat-dep.git
synced 2026-09-12 12:36:23 +00:00
docs(genesis): describe staged package rollout
This commit is contained in:
@@ -79,8 +79,8 @@ Use these flags to skip specific operations:
|
||||
- `--skip-genesis`
|
||||
- Skips the existing per-EL Genesis image build.
|
||||
- `--genesis-release <PATH>`
|
||||
- Adds a verified OpenEmbedded Genesis RPM release and skips the existing
|
||||
per-EL Genesis image build for that run.
|
||||
- Adds a verified OpenEmbedded Genesis RPM release alongside the existing
|
||||
per-EL Genesis packages.
|
||||
- `--scrub-all-chroots`
|
||||
- Runs `mock -r <TARGET> --scrub=all` before build and collection.
|
||||
- `--collect-dir <PATH>`
|
||||
@@ -167,9 +167,9 @@ perl ./mockbuild-all.pl \
|
||||
```
|
||||
|
||||
The release is checked before any package is collected. Its RPMs and SRPMs are
|
||||
copied into each generated EL repository. Old Genesis packages are removed from
|
||||
those output directories so a previous run cannot satisfy the release by
|
||||
accident.
|
||||
copied into each generated EL repository. Stale OpenEmbedded Genesis packages
|
||||
are removed from the output first, while the existing per-EL Genesis package
|
||||
remains available.
|
||||
|
||||
Repository publication requires a release containing every supported Genesis
|
||||
architecture. The packages are `noarch`, and every management-node repository
|
||||
@@ -178,6 +178,11 @@ receives the full set of target images.
|
||||
The release checksums cover the unsigned input packages. If repository signing
|
||||
is enabled, `rpmsign` changes the deployed RPM bytes after collection.
|
||||
|
||||
The OpenEmbedded packages use their own names and install under
|
||||
`/opt/xcat/share/xcat/netboot/genesis-openembedded/`. Publishing them does not
|
||||
replace the Genesis packages used by current xcat-core releases. Activation is
|
||||
a separate xcat-core change.
|
||||
|
||||
Omit `--genesis-release` to keep using the existing Genesis builder.
|
||||
|
||||
# Build Unified Repository Without xCAT (`--skip-xcat`)
|
||||
|
||||
@@ -12,6 +12,7 @@ to the intended commit; it does not change the checkout for you.
|
||||
--xcat-source /path/to/xcat-core \
|
||||
--xcat-ref <tag-or-commit> \
|
||||
--all \
|
||||
--work-dir /path/to/oe-work \
|
||||
--output-dir /path/to/xcat-genesis-release
|
||||
```
|
||||
|
||||
@@ -24,10 +25,15 @@ Use `--architecture` for development builds. Repository publication requires a
|
||||
complete release built with `--all`.
|
||||
|
||||
Each package installs one exact-architecture export under
|
||||
`/opt/xcat/share/xcat/netboot/genesis/<architecture>/`. This includes the kernel,
|
||||
initramfs, manifests, checksums, and license evidence. The packages are `noarch`
|
||||
or `all` because they are installed on the management node, not run on the
|
||||
target node.
|
||||
`/opt/xcat/share/xcat/netboot/genesis-openembedded/<architecture>/`. The package
|
||||
and install namespaces are separate from the old Genesis packages, so both
|
||||
generations can be published and installed without replacing one another. The
|
||||
packages are `noarch` or `all` because they are installed on the management
|
||||
node, not run on the target node.
|
||||
|
||||
`--work-dir` keeps the OpenEmbedded downloads and build state between release
|
||||
builds. Without it, the builder uses a temporary directory and removes it when
|
||||
the command finishes.
|
||||
|
||||
The release directory contains:
|
||||
|
||||
@@ -38,7 +44,7 @@ The release directory contains:
|
||||
Validate the directory before publishing it:
|
||||
|
||||
```bash
|
||||
./genesis-openembedded/verify-release /path/to/xcat-genesis-release
|
||||
./genesis-openembedded/verify-release --complete /path/to/xcat-genesis-release
|
||||
```
|
||||
|
||||
Pass that same directory to the repository builders:
|
||||
@@ -53,23 +59,17 @@ perl ./mockbuild-all.pl \
|
||||
[DIST ...]
|
||||
```
|
||||
|
||||
The RPM builder skips its old per-EL Genesis build when a release is supplied.
|
||||
The APT builder adds the DEB packages to every selected suite. Both consumers
|
||||
require all seven architectures and verify package identities and checksums
|
||||
before collecting packages. Every management-node repository receives every
|
||||
target image so it can provision nodes of another architecture.
|
||||
The RPM builder keeps its old per-EL Genesis build and adds the new packages.
|
||||
The APT builder does the same for each selected suite. Both consumers require
|
||||
all seven architectures and verify package identities and checksums before
|
||||
collecting packages. Every management-node repository receives every target
|
||||
image so it can provision nodes of another architecture.
|
||||
|
||||
Without `--genesis-release`, both builders keep their existing behavior. The
|
||||
option remains opt-in until xcat-core uses the exact package names on every
|
||||
platform. The current RPM naming already matches `x86_64`, but older mappings
|
||||
still use `ppc64` for `ppc64le`, and the DEB packages use `amd64`. Those mappings
|
||||
belong in a separate xcat-core change. Generated images and packages belong in
|
||||
release storage, not in Git.
|
||||
|
||||
The DEB packages replace the old `amd64` and `ppc64el` package spellings during
|
||||
an upgrade. They do not provide aliases for those names. This keeps the old
|
||||
workflow unchanged until the xcat-core package dependencies move to the exact
|
||||
architecture names.
|
||||
new packages do not provide, replace, or obsolete the old package names. A
|
||||
separate xcat-core change will select the OpenEmbedded package and install
|
||||
namespace after the repositories carry it. Generated images and packages
|
||||
belong in release storage, not in Git.
|
||||
|
||||
Run the package tests on a Linux builder with RPM, DEB, and repository tools:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user