Enterprise Actions Runner invisible to user repositories

I can’t figure out how to make a runner registered to an enterprise visible and available to repos that are not associated to an organization.

Is this not possible, or am I not understanding the mechanism used to set this up?

I’m pretty sure that a runner registers itself with an entity (org / user). If you want to register capacity for a user’s repositories you’d need to register the runner to that user.

Note that mixing a runner between entities can be a security risk.

maybe i’m not understanding the concept of “enterprise” runners.

I want the runner to be visible and usable by every org and every repo that is hosted on this GHES instance. I do not care if the repo is in an org or not. I do not care if the repo is public to the instance or not.

I want a set of enterprise runners. runners available to any repo within the enterprise.

Is that not a thing?

I mean, there is no way to associate a runner to a USER, only to a specific repo, an org, or an entire enterprise, but the runners associated to an enterprise are not visible to user repositories, only org repositories. If a runner is associated to an entire enterprise, why can user repos (which are part of the enterprise) not see them?

What am I missing?

I’m not an enterprise user, so I could be wrong…

You can add self-hosted runners at various levels in the management hierarchy:

  • Repository-level runners are dedicated to a single repository.
  • Organization-level runners can process jobs for multiple repositories in an organization.
  • Enterprise-level runners can be assigned to multiple organizations in an enterprise account.

This doesn’t appear to list users as opposed to organizations or repositories.

I think it’d be fine if your user created an org, the org was added to the enterprise, and the repo was moved to the org.

Not really. Those repos are already not in an org because there isn’t an appropriate org, and creating an org just to hold one repo doesn’t make a lot of sense.

I run a GitHub Enterprise Server instance. Everything on that server is in the enterprise hosted by that instance. An enterprise runner should be available to every last repo on that instance. GitHub public runners are available to personal repos on github.com, without user intervention, and I want to create a transparent system like that one for my enterprise.

I’ll set up an enterprise-wide webhook for the workflow_job event and programmatically associate a runner with a user repo whenever a user repo triggers its workflow(s). I’ll write my own orchestrator, too, because the existing ones are inadequate in many ways.

Right. Your use case makes sense.

Reading, it really does appear to be a rough edge:

Before spending time doing the work you describe above, I’d file a ticket using:
It’s possible we’re wrong and you’re paying for support, might as well get a GitHub employee to confirm.

Best wishes

This is a different thing, unrelated to self-hosted runners. This is something to track the implementation of public runners on GHES instances.

I think you’re right that I’ll have to ask GitHub support, however. And I think that they’re going to tell me that enterprise runners cannot perform work for user repos, then point me at the docs that i’ve read a dozen times.


1 Like

Yeah, I know it’s a different thing, the reason I mention it is that it kind of hints that the thing you want/need appears entirely missing.

ah, gotcha. ok. This roadmap item is at least for GHES admins who don’t want to maintain their own runners, and it may also be the future supported way to provide runners for user repos in a GHES instance.