feat(release): separate stack artifact inventories - #1839
Draft
sbaum1994 wants to merge 4 commits into
Draft
Conversation
Move resolved render-state ownership into the self-managed release configuration, preserve independently versioned stack catalog entries, and discover image references passed through controller arguments. Document the dependency-to-inventory-to-manifest workflow and classify cert-manager-acmesolver v1.20.2 as an existing optional runtime image. This does not change the dependency version and has no new license or NOTICE impact. Relates to #1838 Signed-off-by: Stephanie Baum <sbaum@nvidia.com>
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueComment |
Contributor
|
🌿 Preview your docs: https://nvidia-preview-feat-self-managed-stack-inventory.docs.buildwithfern.com/nvcf |
Give the self-managed, compute-plane, and observability stacks independent inventory configurations and release assets. Aggregate the three selected inventories for documentation while rejecting cross-stack state ownership and artifact version conflicts. No third-party dependency versions change. License and NOTICE content are unchanged. Relates to #1838 Signed-off-by: Stephanie Baum <sbaum@nvidia.com>
Signed-off-by: Stephanie Baum <sbaum@nvidia.com>
Track independently versioned control-plane, compute-plane, and observability inventories as one QA-qualified documentation release set. Derive manifest ownership and optionality from inventories, add release-set comparison, and keep adoption checks warn-only. Closes #1838
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
TL;DR
Give the self-managed, compute-plane, and observability stacks independent
release inventories, then merge those three peer inventories into the public
artifact catalog and generated manifest.
Why
The self-managed inventory previously rendered states from all three stack
trees. That made the control-plane release responsible for independently
versioned compute and observability dependencies. It also missed images passed
through controller arguments rather than normal Kubernetes
imagefields,including the cert-manager ACME HTTP-01 solver.
What changed
release-inventory.yamlowned by each stack.and observability stacks.
three stack tags.
version flags can pin an exact compatible release set.
duplicate releases, and conflicting cross-stack artifact versions.
--*-image=<reference>arguments and coverage forcert-manager's ACME HTTP-01 solver image.
with publication pending.
deploy/stacks/INVENTORY.md.Customer Release Notes
Each self-managed NVCF stack now publishes its own artifact inventory. The
generated manifest combines the selected control-plane, compute-plane, and
observability inventories and includes the optional cert-manager ACME HTTP-01
solver image.
Plan Summary
No Kubernetes runtime resources change. Release automation now creates these
independent assets:
nvcf-self-managed-stack-inventory.jsonnvcf-compute-plane-stack-inventory.jsonnvcf-observability-stack-inventory.jsonThe documentation updater consumes all three as peers. No inventory config
references another stack's Helmfile state.
Architecture
We split ownership at the distributable boundary. Each stack directory owns
its Helmfile states, render profiles, and
release-inventory.yaml. A stack tagtherefore produces one inventory containing only artifacts installed or
created by that stack.
The release workflow resolves those artifacts from the immutable tagged
source and publishes the inventory beside that stack's release. The three
stacks can release independently; the control-plane release no longer carries
compute-plane or observability state.
tools/docs-version-syncis the aggregation boundary. It downloads the threepeer inventories, verifies that each inventory contains only its assigned
plane, rejects incompatible duplicate artifacts, and updates the version
catalog. The catalog keeps public distribution locations and required or
optional classifications, while the released inventories remain the source of
truth for resolved versions and provenance. The manifest page is generated
from that combined catalog.
At this phase, the latest-release comparison stays warn-only. Locally generated
documentation must still match the checked-in catalog.
Release Sequence
sequenceDiagram actor Contributor participant Stack as Owning stack participant Release as Release workflow participant Assets as GitHub Releases participant Sync as docs-version-sync participant Catalog as Version catalog participant Manifest as Manifest page Contributor->>Stack: Update dependency and release-inventory.yaml Contributor->>Stack: Run stack, inventory, and docs checks loop Self-managed, compute-plane, and observability releases Release->>Stack: Check out immutable stack tag Release->>Stack: Render configured profiles Stack-->>Release: Return charts, images, and resources Release->>Release: Validate stack ownership and classifications Release->>Assets: Publish the stack inventory JSON end Sync->>Assets: Download all three inventory assets Assets-->>Sync: Return immutable release inventories Sync->>Sync: Validate planes and merge compatible artifacts Sync->>Catalog: Update versions, provenance, and release sources Sync->>Manifest: Generate customer-facing inventory blocksUsage
Follow
deploy/stacks/INVENTORY.mdwhen adding, updating, or removing a stackdependency. To update documentation from the latest three releases:
Use
--stack-version,--compute-stack-version, and--observability-stack-versionto select exact versions.Testing
make -C deploy/stacks/self-managed testmake -C deploy/stacks/nvcf-compute-plane test-localgo test -C tools/docs-version-sync ./...go vet -C tools/docs-version-sync ./...python3 tools/ci/test-github-release.pypython3 .cursor/hooks/validate-skill-fanout.py./tools/ci/check-doc-version-sync./tools/ci/check-docs(0 errors, 1 hidden warning)git diff --checkmake -C deploy/stacks/observability testreaches the profile matrix but doesnot complete under the macOS system Bash 3 because an existing empty array is
expanded under
set -uintests/profile-defaults.sh. The changed code doesnot modify that script. Linux CI provides the required validation environment.
Notes
The latest-release comparison is expected to warn until all three new release
assets exist. Its CI step remains
continue-on-error, so it stays non-blockingas requested. Generated-document consistency remains blocking.
Anonymous access could not verify the public cert-manager-acmesolver mirror,
so its distribution remains
Publication pending.References
Related Pull Requests
None.
Dependencies
No new third-party dependency or version change. This inventories the existing
cert-manager-acmesolver v1.20.2 runtime image. cert-manager license handling is
already present, and no NOTICE update is required.
For the Reviewer
Please focus on the three inventory ownership boundaries, release asset
registration, and the three-way catalog merge and conflict validation.
For QA
No separate cluster QA is required. Release and documentation CI provide the
relevant validation.
Issues
Relates to #1838
Checklist