Skip to content

feat(ci): add modular nightly build workflow for S3 + DockerHub publishing - #642

Open
sangli-pensando wants to merge 3 commits into
ROCm:mainfrom
sangli-pensando:feature/nightly-build-workflow
Open

feat(ci): add modular nightly build workflow for S3 + DockerHub publishing#642
sangli-pensando wants to merge 3 commits into
ROCm:mainfrom
sangli-pensando:feature/nightly-build-workflow

Conversation

@sangli-pensando

@sangli-pensando sangli-pensando commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds a nightly build pipeline (nightly-build.yml) that builds all gpu-operator artifacts, publishes to S3 and DockerHub (amdpsdo/), and calls the common-infra-operator orchestrator for validation
  • Workflow is decomposed into reusable stages (build-images.yml, build-helm.yml, publish.yml, build-summary.yml) to enable future extraction to common-infra-operator for cross-repo reuse
  • Builds 4 container images (operator, utils, OLM bundle, remediation-configmap-util) + 1 Helm chart, with dedup based on date + SHA

Workflow architecture

nightly-build.yml (orchestrator)
  resolve          — version, date, SHA, S3 prefix, dedup check
  build-images.yml — 4 container images inside dev container (parallel)
  build-helm.yml   — Helm chart inside dev container (parallel)
  publish.yml      — S3 upload + DockerHub push + .build-ok marker
  validate         — calls common-infra-operator/rocm-orchestrator.yml
  build-summary.yml — step summary with all stage results

Artifacts published (nightly)

Artifact S3 DockerHub
gpu-operator gpu-operator-{VER}-{DATE}.tar.gz amdpsdo/gpu-operator:{VER}-{DATE}
gpu-operator-utils gpu-operator-utils-{VER}-{DATE}.tar.gz amdpsdo/gpu-operator-utils:{VER}-{DATE}
gpu-operator-bundle (OLM) gpu-operator-olm-bundle-{VER}-{DATE}.tar.gz amdpsdo/gpu-operator-bundle:{VER}-{DATE}
gpu-operator-remediation-configmap-util ...{VER}-{DATE}.tar.gz amdpsdo/gpu-operator-remediation-configmap-util:{VER}-{DATE}
gpu-operator-helm-k8s chart gpu-operator-helm-k8s-{VER}-{DATE}.tgz N/A
.build-ok marker written to S3 prefix N/A

S3 path: s3://THEROCK_BUCKET_NAME/gpu-operator/nightly/{YYYYMMDD}/

PR validation approach

A temporary pull_request trigger (path-filtered to workflow files) has been added to validate the build stages on this PR. This trigger will be removed before merging.

Expected PR run results

Stage Expected Reason
Resolve pass Reads Makefile, computes date/SHA
Build Images pass Builds dev container + 4 images inside it
Build Helm pass Builds dev container + Helm chart
Publish skipped Skipped on pull_request events (fork PRs lack repo secrets)
Validate skipped Depends on publish
Summary pass Reports stage results

Full end-to-end validation (post-merge)

After merging, trigger via gh workflow run nightly-build.yml to validate the complete pipeline including S3 upload and DockerHub push.

Test plan

  • PR triggers workflow — resolve + build stages pass
  • Post-merge: trigger via workflow_dispatch and verify full pipeline
  • Verify artifacts appear in S3 under gpu-operator/nightly/{DATE}/
  • Verify images are pushed to docker.io/amdpsdo/ with correct tags
  • Verify .build-ok marker is written to S3
  • Verify dedup skips rebuild on second trigger with same SHA + date
  • Remove temporary pull_request trigger before or after merge

Notes

  • Does NOT touch existing weekly-build.yml or ci.yml
  • No ROCm tarball dependency (gpu-operator is pure Go)
  • Dedup: schedule-only, based on {date}-{sha} cache key
  • Pre-release trigger and Helm OCI push are out of scope (nightly only)

sangli-pensando and others added 3 commits September 9, 2026 08:02
…shing

Introduces a nightly build pipeline that builds all gpu-operator artifacts
(controller, utils, OLM bundle, remediation-configmap-util, Helm chart),
publishes to S3 and DockerHub (amdpsdo/), and calls the common-infra-operator
orchestrator for validation. The workflow is decomposed into reusable stages
(build-images, build-helm, publish, build-summary) to enable future extraction
to common-infra-operator for cross-repo reuse.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds pull_request trigger (path-filtered to workflow files) so the
nightly build can be validated on the PR before merging. Publish is
skipped on PR events since fork PRs lack access to repo secrets.
Remove the PR trigger before merging.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The entrypoint uses exec "$@" when USER_NAME is not set (CI mode).
Passing bash -c as separate args caused exec to treat the entire
script as a binary name (exit code 127). Match the make default
pattern: pass the full command as a single quoted string.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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