Skip to content

fix(ci): push each image of a multi-image subtree to its own dev repository - #1985

Open
balajinvda wants to merge 1 commit into
mainfrom
fix/ci-image-push-multi-image-subtrees
Open

balajinvda wants to merge 1 commit into
mainfrom
fix/ci-image-push-multi-image-subtrees

Conversation

@balajinvda

@balajinvda balajinvda commented Sep 18, 2026

Copy link
Copy Markdown
Contributor

Why

The deploy-to-stg build on #1969 reported success but pushed all four NVCA images to the same place:

[push] //src/compute-plane-services/nvca/cmd/cluster-validator:image_index -> <registry>/nvca:gh.2232-49a7b3d5
[push] //src/compute-plane-services/nvca/cmd/nvca:image_index             -> <registry>/nvca:gh.2232-49a7b3d5
[push] //src/compute-plane-services/nvca/cmd/nvca-operator:image_index    -> <registry>/nvca:gh.2232-49a7b3d5
[push] //src/compute-plane-services/nvca/cmd/tools:image_index            -> <registry>/nvca:gh.2232-49a7b3d5

The repository name is derived from the target name, and a target named image maps to the service. NVCA has four targets named image in different cmd/ packages, so the last push won and the dev tag is unusable for the agent or the operator.

What changed

When a subtree has more than one plain image target, the package leaf names the repository, and the leaf that equals the service keeps the plain service name. A subtree with a single image target keeps mapping to the service wherever that target lives. Simulated against every image target in the tree: NVCA becomes nvca, nvca-operator, cluster-validator, tools; the two Rust stargate crates become pylon and stargate if that subtree is ever pushed; every other service is unchanged.

Customer Release Notes

Not customer visible

Plan Summary

Not applicable

Usage

Label a PR deploy-to-stg as before. NVCA builds now land in the four repositories above under the same gh.<run>-<sha> tag.

Testing

Notes

CI-only change, no tests to add. The tags attribute on the NVCA image targets already carries the intended names; a follow-up could derive from it, but the package leaf matches production naming for the two that matter.

References

None

Related Pull Requests

Dependencies

None

Issues

Relates to #1326

Summary by CodeRabbit

  • Bug Fixes
    • Improved repository naming for manual image publishing when multiple image targets are configured.
    • Preserved service-based naming for single-image configurations and matching package names.

…sitory

image-push mapped every target named `image` to the service repository.
NVCA has four such targets, cmd/nvca, cmd/nvca-operator,
cmd/cluster-validator and cmd/tools, so a deploy-to-stg build pushed all
four to <registry>/nvca:<tag> and the last one won. When a subtree has
more than one plain `image` target, the package leaf now names the
repository, with the leaf equal to the service keeping the service name.
Subtrees with a single `image` target keep mapping to the service
wherever that target lives.

Co-Authored-By: Balaji Ganesan <bganesan@nvidia.com>
@balajinvda
balajinvda requested a review from a team as a code owner September 18, 2026 21:07
@coderabbitai

coderabbitai Bot commented Sep 18, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: NVIDIA/nvcf/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 71082a56-84cd-4426-aa4d-b5e46e16493b

📥 Commits

Reviewing files that changed from the base of the PR and between 4557744 and 94b4dd0.

📒 Files selected for processing (1)
  • .github/workflows/image-push-manual.yml

Included review availability: Your plan provides up to 12 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

The manual image-push workflow now counts plain image targets before assigning repository names. Single targets retain the service name. Multiple targets use package leaves, except when a leaf matches the service name.

Changes

Image repository naming

Layer / File(s) Summary
Repository name selection
.github/workflows/image-push-manual.yml
The workflow counts plain image targets. It keeps the service name for one target and for matching package leaves. Other multiple-target cases use the package leaf.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix

Suggested reviewers: apartha-nv

Merge Risk: ⚪ Minimal · up to 94b4d

No actionable merge-blocking risk remains from the reviewed change.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title follows Conventional Commits format with the required scope. It accurately describes the CI bug fix that assigns separate repositories to images in multi-image subtrees.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
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.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant