Skip to content

Conversation

Copy link

Copilot AI commented Dec 2, 2025

Individual users with multiple repositories need a single listener to manage runners across all repos without deploying separate infrastructure per repository.

Changes

Configuration

  • Added repositories field accepting array of GitHub repository URLs
  • When set, configure_url and runner_scale_set_id become optional
  • Requires runner_scale_set_name in multi-repo mode for scale set identification
  • Backward compatible: single-repo mode unchanged when using configure_url

Listener Architecture

  • Creates one listener instance per repository, each with its own scale set
  • Scale sets auto-created or retrieved via GetRunnerScaleSet/CreateRunnerScaleSet
  • All listeners share the same Kubernetes worker pool and run concurrently via errgroup
  • Independent failure isolation: one listener failure doesn't affect others

Example Config

{
  "repositories": [
    "https://github.com/user/repo1",
    "https://github.com/user/repo2"
  ],
  "github_token": "ghp_...",
  "runner_scale_set_name": "shared-runners",
  "ephemeral_runner_set_namespace": "default",
  "ephemeral_runner_set_name": "runners",
  "max_runners": 10,
  "min_runners": 1
}

Single-repo mode continues to work with existing configs:

{
  "configure_url": "https://github.com/user/repo",
  "runner_scale_set_id": 12345,
  ...
}

Notes

  • PAT or GitHub App must have permissions across all specified repositories
  • Each repository gets its own scale set instance (GitHub-side), even with same name
  • Retry/reconnect logic inherited from existing listener (10 retries, 30s intervals)
Original prompt

currently one listener / pod combo for a scale set can only be active for an organization or for a repository. I am an individual user with many repositories, I need one listener to listen to multiple repositories and then use the runners in its scale set as needed. I need the most easy, least intrusive fix for this, ideally without needing to push an image to a central container registry. I exect to be able to provide a yaml file that has the list of repositories that my listener should listen to and the listener should also have robust retry and reconnect logic. assume the PAT is valid across repositories for now.


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

@github-actions
Copy link

github-actions bot commented Dec 2, 2025

Hello! Thank you for your contribution.

Please review our contribution guidelines to understand the project's testing and code conventions.

Copilot AI and others added 4 commits December 2, 2025 15:51
Co-authored-by: MSDNAndi <6744335+MSDNAndi@users.noreply.github.com>
Co-authored-by: MSDNAndi <6744335+MSDNAndi@users.noreply.github.com>
Co-authored-by: MSDNAndi <6744335+MSDNAndi@users.noreply.github.com>
Co-authored-by: MSDNAndi <6744335+MSDNAndi@users.noreply.github.com>
Copilot AI changed the title [WIP] Add support for listener to handle multiple repositories Add multi-repository listener support for scale sets Dec 2, 2025
Copilot AI requested a review from MSDNAndi December 2, 2025 16:02
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.

2 participants