Skip to content

#244 - Add CI workflow to publish container images to NGC staging - #245

Open
chloecrozier wants to merge 4 commits into
mainfrom
ccrozier/container-publish-ci
Open

#244 - Add CI workflow to publish container images to NGC staging#245
chloecrozier wants to merge 4 commits into
mainfrom
ccrozier/container-publish-ci

Conversation

@chloecrozier

@chloecrozier chloecrozier commented Aug 16, 2026

Copy link
Copy Markdown
Member

Closes #244

Builds the container on Intel and ARM machines when a release is tagged, uploads both, and joins them into a single tag. Replaces the current manual two-machine process.

Next steps: uploading requires an NGC_API_KEY repository secret (Settings → Secrets and variables → Actions) with write access to nvstaging. Build-only runs work without it.

Building and pushing the container to nvcr.io/nvstaging/holoscan/daqiri
required two machines and a manual manifest merge, which already produced
one release whose two architectures came from different source revisions.

Build both arches natively on tag, then join them into a single tag. The
workflow calls scripts/build-container.sh rather than repeating its build
args so CI and local builds cannot drift, and verifies the git tag matches
VERSION before publishing.

Signed-off-by: Chloe Crozier <[email protected]>
A build-only dry run failed on repositories without the NGC_API_KEY
secret, even though nothing is pushed. The CUDA base image pulls
anonymously, so gate the login on the same condition as the push.

Signed-off-by: Chloe Crozier <[email protected]>
@greptile-apps

greptile-apps Bot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR adds a release and manually triggered workflow that builds amd64 and arm64 container images, pushes architecture-specific tags to NGC staging, and creates a combined multi-architecture manifest.

  • Validates release tags against the repository VERSION before publishing.
  • Supports build-only manual runs when registry credentials are unavailable.
  • Pins checkout actions to immutable commit SHAs in credential-bearing jobs.
  • Reclaims runner disk space before building the large container image.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains; the malformed-tag publishing path is rejected before normalization, and both credential-bearing jobs now use an immutable checkout revision.

Important Files Changed

Filename Overview
.github/workflows/container-publish.yml Adds the multi-architecture NGC publishing workflow and resolves both prior findings by strictly rejecting malformed release tags before normalization and pinning checkout to an immutable commit.

Reviews (3): Last reviewed commit: "#244 - Pin actions/checkout to a commit ..." | Re-trigger Greptile

Comment thread .github/workflows/container-publish.yml
Comment thread .github/workflows/container-publish.yml Outdated
The version guard normalized tag fields with awk %d, which reads only a
leading integer. A prerelease tag such as v2026.07.00-rc1 therefore
compared equal to VERSION and published over the stable 2026.7.0 image,
since the image tag is derived from VERSION rather than from the tag.
Short tags (v2026.7) and trailing junk (v2026.7.0abc) passed the same way.

Require the full vYYYY.MM.PATCH form before comparing, and validate
VERSION itself since it becomes the published tag verbatim.

Signed-off-by: Chloe Crozier <[email protected]>
These jobs are the first in the repo to hold a registry credential, so
resolve the action by commit instead of by the mutable v4 tag. v4
currently points at this commit, so the pinned version is unchanged.

Signed-off-by: Chloe Crozier <[email protected]>
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.

[FEA] Publish multi-arch container images to NGC staging from CI

3 participants