Skip to content

feat(release): declare publishable container images in release/assets.yaml#318

Open
a2bondar wants to merge 2 commits into
mainfrom
abondarenko/aireinf-216-container-eligibility
Open

feat(release): declare publishable container images in release/assets.yaml#318
a2bondar wants to merge 2 commits into
mainfrom
abondarenko/aireinf-216-container-eligibility

Conversation

@a2bondar

@a2bondar a2bondar commented Jun 12, 2026

Copy link
Copy Markdown

Summary

Makes release/assets.yaml the single source of truth for which container images are eligible for release publishing, and records them as typed entries in the release bundle manifest — converging containers onto the existing release flow.

  • New container: list in release/assets.yaml (mirrors the sdk: list) declaring the four Automodel images: nmp-automodel-base, nmp-automodel-tasks, nmp-automodel-training, nmp-unsloth-training.
  • release-bundle.yaml plan-assets validates the list (non-empty, unique ids) and appends {"type": "container", "id": ...} entries to the selected artifacts. Containers ride along on every release; release_scope governs SDK selection only.
  • write_release_bundle_metadata.py records them in release-manifest.json as metadata-only entries (type, id, version = release label; no path or checksum — image bits are built and staged by Platform-Deploy from its dev registry at the bundle's source SHA). Unit tests extended (18 passing).
  • RELEASING.md documents the contract.

Consumer side (NVIDIA-NeMo/Platform-Deploy#95): release-bundle-received automatically stages the declared containers after the SDK publish, reading this list at the release ref — so eligibility is version-pinned to the released commit. Public NGC promotion reads it at the release tag and stays manual.

Merge order

Either order is safe: without the consumer PR, the manifest's container entries are recorded but unconsumed (the existing SDK publish plan filters type == "sdk"); without this PR, the consumer's staging step no-ops with "no containers declared". The full flow activates when both land.

Links

🤖 Generated with Claude Code

….yaml

The container list in release/assets.yaml is the single source of truth for
which container images are eligible for release publishing. Platform-Deploy's
Release Deploy Artifacts and Release Promote Public workflows read it from
this repository at the release ref, so eligibility is version-pinned to the
released commit. Declares the four Automodel images.

Linear: AIREINF-216

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: abondarenko <abondarenko@nvidia.com>
@a2bondar a2bondar requested review from a team as code owners June 12, 2026 20:58
@github-actions github-actions Bot added the feat label Jun 12, 2026
@coderabbitai

coderabbitai Bot commented Jun 12, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Added container image eligibility configuration to release/assets.yaml and documented it in RELEASING.md. Extended the release bundle metadata generator and the release workflow to plan and emit container artifacts as metadata-only entries, and added tests validating selection and id safety.

Changes

Container Image Release Eligibility

Layer / File(s) Summary
Container eligibility configuration and documentation
release/assets.yaml, RELEASING.md
release/assets.yaml adds a container: list of four eligible image ids. RELEASING.md adds a "Container image eligibility" section describing how the list controls Platform-Deploy staging/publishing at the release ref, version pinning, catalog metadata requirements, and dev-registry tagging requirements.

Release bundle metadata, workflow, and tests

Layer / File(s) Summary
Parsing & id validation
.github/scripts/write_release_bundle_metadata.py
Docstring updated; added safe_artifact_id(artifact_type, artifact_id) and parse_selected_artifact_ids() to parse selected_artifacts_json into grouped sdk and container ids with validation and require at least one SDK id.
Manifest emission changes
.github/scripts/write_release_bundle_metadata.py
write_release_bundle_metadata() consumes grouped ids, copies/inspects SDK wheels as before, and appends container metadata-only artifact entries containing type, id, and version (no path/checksum).
Workflow: plan container artifacts
.github/workflows/release-bundle.yaml
"Plan release assets" step now reads release/assets.yaml container ids, validates and deduplicates them, constructs container artifact JSON, appends them to selected_artifacts_json, and echoes planned container ids.
Unit tests for container handling
tests/unit/release/test_write_release_bundle_metadata.py
Added tests for unsupported artifact types, container metadata-only manifest entries, container-only selection failure, duplicate and unsafe container id validation, and updated duplicate-sdk error wording.

Suggested reviewers

  • mquong-ca
  • svvarom
  • crookedstorm
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 7.69% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main change: declaring container image eligibility in release/assets.yaml, which is the core feature across all modified files.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch abondarenko/aireinf-216-container-eligibility

Comment @coderabbitai help to get the list of available commands and usage tips.

@a2bondar a2bondar self-assigned this Jun 12, 2026
@github-actions

Copy link
Copy Markdown
Contributor
Suite Lines Covered Line Rate Branch Rate
Unit Tests 19033/25227 75.4% 61.4%
Integration Tests 11028/23999 46.0% 20.4%

…fest

plan-assets reads the container list from release/assets.yaml (validated
for non-empty, unique ids) and appends container-typed entries to the
selected artifacts. The bundle metadata writer records them in
release-manifest.json as metadata-only entries (type, id, version =
release label; no path or checksum, since image bits are staged by
Platform-Deploy from its dev registry at the bundle's source SHA).
Containers ride along on every release regardless of release_scope.

Linear: AIREINF-216

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: abondarenko <abondarenko@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant