Align packaged Helm defaults with the release artifact matrix - #2461
Align packaged Helm defaults with the release artifact matrix#2461jdye64 wants to merge 10 commits into
Conversation
Co-authored-by: Jeremy Dyer <jdye64@gmail.com>
Co-authored-by: Jeremy Dyer <jdye64@gmail.com>
Co-authored-by: Jeremy Dyer <jdye64@gmail.com>
Co-authored-by: Jeremy Dyer <jdye64@gmail.com>
Co-authored-by: Jeremy Dyer <jdye64@gmail.com>
Co-authored-by: Jeremy Dyer <jdye64@gmail.com>
Co-authored-by: Jeremy Dyer <jdye64@gmail.com>
Greptile SummaryThe PR aligns packaged Helm metadata and the default service image tag with the requested release version.
|
| Filename | Overview |
|---|---|
| ci/scripts/release_helm_chart.py | Adds targeted YAML version updates, packaged-image tag validation, and Markdown inventory generation. |
| .github/workflows/perform-release.yml | Requests and publishes the packaged Helm image inventory in both release phases. |
| .github/workflows/release-helm.yml | Adds the packaged image inventory to the standalone Helm release artifact summary. |
| nemo_retriever/helm/values.yaml | Updates the optional Parse and Omni NIM repositories and tags to release-qualified versions. |
| ci/tests/test_release_helm_chart.py | Covers release metadata replacement, nested image collection, pinned-tag validation, and inventory rendering. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart LR
A[Release version] --> B[Package Helm chart]
B --> C[Set chart version and appVersion]
B --> D[Set default service image tag]
B --> E[Collect image references]
E --> F[Validate pinned tags]
F --> G[Write image inventory]
G --> H[Workflow summary]
Reviews (3): Last reviewed commit: "chore: merge upstream/main and resolve d..." | Re-trigger Greptile
| --name "${{ inputs.chart-name }}" \ | ||
| --chart-dir "${HELM_CHART_DIR}" \ | ||
| --version "${{ inputs.version }}" \ | ||
| --image-inventory helm-image-inventory.md \ | ||
| $DRY_RUN_FLAG | ||
|
|
||
| - name: Upload packaged chart artifact |
There was a problem hiding this comment.
Implicit release workflow permissions
This release workflow still relies on repository-level GITHUB_TOKEN defaults instead of declaring explicit least-privilege permissions. Changes to those defaults can silently grant this secret-bearing workflow broader access than it requires, making its effective security posture difficult to audit.
Rule Used: GitHub Actions workflows must include explicit 'pe... (source)
Prompt To Fix With AI
This is a comment left during a code review.
Path: .github/workflows/release-helm.yml
Line: 67-73
Comment:
**Implicit release workflow permissions**
This release workflow still relies on repository-level `GITHUB_TOKEN` defaults instead of declaring explicit least-privilege permissions. Changes to those defaults can silently grant this secret-bearing workflow broader access than it requires, making its effective security posture difficult to audit.
**Rule Used:** GitHub Actions workflows must include explicit 'pe... ([source](.greptile))
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
Co-authored-by: Jeremy Dyer <jdye64@gmail.com>
Description
Addresses the release-packaging mismatches tracked by Bug 6596068.
Release packaging now:
version,appVersion, and defaultservice.image.tagto the requested release version. A26.08-RC1release therefore defaults tonrl-service:26.08-RC1, matching the image built and pushed by the same workflow.nvcr.io/nim/nvidia/nemotron-parse-v2.0:2.0.8-variant.nvcr.io/nim/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:2.0.4-variant.latest.Chart documentation and the published support matrix track both new image pins. Targeted YAML scalar edits preserve chart comments and formatting. The regression test now reads each NIM's
repositoryandtagfrom inside its own values block, so a swapped Parse/Omni pin fails.Scope notes
nemo_retriever/dev/compose/service-mode.compose.yamlstill defaultsNIM_PARSE_TAGandNIM_CAPTION_TAGto the previous images. Those defaults are left alone here because the library's self-hosted Parse contract still resolves tonvidia/nemotron-parse-v1.2, so moving dev compose to the v2.0 NIM could break local service-mode runs.answer_llmoverride example still usesnvcr.io/nim/nvidia/nemotron-3-nano:1.7.0-variant, which is a different NIM from the Omni caption SKU.Validation
python3 nemo_retriever/tests/test_helm_optional_nims_disabled_by_default.py(15 tests: nine source and docs assertions passed, six Helm-render tests skipped because Helm is unavailable here)python3 -m pytest ci/tests/test_release_helm_chart.py -q(7 passed)python3 -m mkdocs build --strict --config-file mkdocs.yml(passed)nemotron-parse-v2.0:2.0.8-variantand Omni tonemotron-3-nano-omni-30b-a3b-reasoning:2.0.4-variant, with every chart image pinnedChecklist