Skip to content

ci(docker): use H200 runner for builds and add nightly GHCR workflow - #507

Merged
slin1237 merged 1 commit into
mainfrom
slin/docker-build
Feb 22, 2026
Merged

slin1237 merged 1 commit into
mainfrom
slin/docker-build

Conversation

@slin1237

@slin1237 slin1237 commented Feb 22, 2026 •

Copy link
Copy Markdown
Member

Summary

Use the H200 GPU runner for Docker builds (replacing single-core ubuntu-latest) and add a nightly build that publishes to GitHub Container Registry.

What changed

  • .github/workflows/release-docker.yml: Changed runs-on from ubuntu-latest to ["8-gpu-h200"] for faster builds
  • .github/workflows/nightly-docker.yml (new): Nightly Docker build at 06:00 UTC pushing to ghcr.io/lightseekorg/smg:nightly

Why

The H200 runner is only used during nightly benchmarks (08:00 UTC), leaving it idle the rest of the time. Docker builds on ubuntu-latest are slow due to limited compute. Moving builds to H200 leverages its many cores for significantly faster builds.

The nightly GHCR image provides a daily snapshot without cluttering Docker Hub releases. Uses a single :nightly tag that gets overwritten each run to avoid storage accumulation.

How

  • Nightly scheduled at 06:00 UTC — 2 hours before benchmarks at 08:00 UTC to avoid runner contention
  • Uses QEMU + buildx for multi-platform (linux/amd64, linux/arm64)
  • GHA build cache (type=gha) for layer caching
  • Concurrency group prevents overlapping runs
  • if: github.repository == 'lightseekorg/smg' guard prevents fork execution
  • GITHUB_TOKEN (built-in) with packages: write permission for GHCR — no extra secrets needed

Test plan

  • Trigger workflow_dispatch on nightly-docker workflow to verify GHCR push
  • Trigger workflow_dispatch on release-docker workflow to verify H200 build
  • Confirm no runner contention between nightly docker (06:00) and benchmarks (08:00)

Summary by CodeRabbit

  • New Features

    • Nightly Docker images are now automatically built and published daily.
  • Chores

    • Updated Docker build infrastructure for improved performance and consistency.

- release-docker.yml: switch runs-on from ubuntu-latest to 8-gpu-h200
  for significantly faster Docker builds using the H200 runner's many
  cores, which is otherwise idle outside the nightly benchmark window

- nightly-docker.yml: new workflow that builds the Docker image daily
  at 06:00 UTC (2h before nightly benchmarks at 08:00 UTC to avoid
  runner contention) and pushes to GitHub Container Registry at
  ghcr.io/lightseekorg/smg:nightly — single tag that gets overwritten
  each run to avoid storage accumulation. Uses QEMU + buildx for
  multi-platform support (linux/amd64, linux/arm64), GHA build cache,
  and concurrency group to prevent overlapping runs. Guarded by
  repository check so forks don't trigger builds.

Signed-off-by: Simon Lin <simon@simonlin.com>
Signed-off-by: Simo Lin <linsimo.mark@gmail.com>
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Note

Gemini is unable to generate a summary for this pull request due to the file types involved not being currently supported.

@coderabbitai

coderabbitai Bot commented Feb 22, 2026 •

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

This pull request introduces a new nightly Docker build workflow scheduled to run daily at 6:00 UTC and updates the existing release Docker workflow to use a GPU runner (8-gpu-h200) instead of the standard Ubuntu runner for multi-architecture image builds.

Changes

Cohort / File(s) Summary
New Nightly Docker Workflow
.github/workflows/nightly-docker.yml
Introduces a new workflow triggered on schedule (6:00 UTC daily) and manual dispatch. Builds and pushes multi-architecture Docker images (linux/amd64, linux/arm64) to ghcr.io/lightseekorg/smg:nightly on a GPU runner with GitHub Actions caching enabled.
Updated Release Docker Workflow
.github/workflows/release-docker.yml
Changes the job runner from ubuntu-latest to 8-gpu-h200 GPU runner.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested labels

ci

Suggested reviewers

  • CatherineSue
  • key4ng
  • XinyueZhang369

Poem

🐰 A nightly build hops into view,
GPU runners working, shiny and new,
Docker images dance across archs so wide,
With caching for speed and GitHub's great pride! 🐇✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately and concisely describes the two main changes: switching to H200 runner for Docker builds and adding a nightly GHCR workflow.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch slin/docker-build

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

@github-actions github-actions Bot added the ci CI/CD configuration changes label Feb 22, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/nightly-docker.yml:
- Around line 22-24: Remove the redundant job-level permissions block (the lines
defining permissions: contents: read and packages: write) because these
duplicate the workflow-level permissions already defined; locate the job's
permissions stanza (the permissions: contents: read and packages: write entries)
and delete it so only the workflow-level permissions remain, or alternatively
keep the block if you intentionally want explicit job-level override—choose one
approach and ensure there is no duplicate permissions block.

Comment thread .github/workflows/nightly-docker.yml
@slin1237
slin1237 merged commit f62ea0d into main Feb 22, 2026
19 of 20 checks passed
@slin1237
slin1237 deleted the slin/docker-build branch February 22, 2026 04:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci CI/CD configuration changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant