Repository navigation
fix(ci): enable ephemeral runners to prevent dead runner accumulation - #503
Conversation
Set `ephemeral: true` on all ARC RunnerDeployment specs (CPU, GPU H100, GPU A10). Without this, runner pods that get killed or scaled down never deregister from GitHub, leaving ghost runner entries. With ephemeral mode, each runner picks up one job, self-deregisters on completion, and the pod terminates cleanly. The ARC controller replaces it to maintain minReplicas. What changed: - scripts/k8s-runner-resources/arc-runner-cpu.yaml: add ephemeral: true - scripts/k8s-runner-resources/arc-runner-gpu.yaml: add ephemeral: true to both H100 and A10 RunnerDeployments Refs: dead runner cleanup in actions-runner-system namespace Signed-off-by: Simo Lin <linsimo.mark@gmail.com>
Summary of ChangesHello @slin1237, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request implements a crucial change to the CI/CD infrastructure by configuring GitHub Actions runners to operate in ephemeral mode. This modification ensures that each runner pod processes a single job and then gracefully deregisters itself, preventing the accumulation of stale and inactive runner entries within GitHub. The primary impact is a cleaner and more efficient runner management system, reducing operational overhead and improving the reliability of CI workflows. Highlights
Changelog
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
|
No actionable comments were generated in the recent review. 🎉 📝 WalkthroughWalkthroughThis pull request adds the Changes
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~5 minutes Possibly related issues
Possibly related PRs
Suggested labels
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Code Review
The pull request correctly enables ephemeral: true for all RunnerDeployment resources (arc-runner-cpu, arc-runner-gpu-h100, and arc-runner-gpu-a10). This is the recommended configuration for the Actions Runner Controller (ARC) when using autoscaling or to prevent the accumulation of "offline" ghost runners in GitHub, as it ensures each runner pod is cleaned up and deregistered after completing a single job. The changes are consistent across all configuration files and align with the existing autoscaler settings.
Summary
Set
ephemeral: trueon all ARC RunnerDeployment specs to fix dead runner accumulation in GitHub.What changed
scripts/k8s-runner-resources/arc-runner-cpu.yaml— addedephemeral: truescripts/k8s-runner-resources/arc-runner-gpu.yaml— addedephemeral: trueto both H100 and A10 RunnerDeploymentsWhy
Without ephemeral mode, runner pods that get killed, evicted, or scaled down never deregister from GitHub, leaving 120+ ghost "offline" runner entries. Each CI job spawns a new pod, but the old registration persists.
How
With
ephemeral: true, each runner picks up exactly one job, self-deregisters from GitHub on completion, then the pod terminates. The ARC controller replaces it to maintainminReplicas. This is the recommended mode for ARC with autoscaling.Test plan
gh apikubectl apply)Summary by CodeRabbit