About self-hosted runner groups
Note: All organizations have a single default self-hosted runner group. Creating and managing additional self-hosted runner groups is only available to enterprise accounts, and for organizations owned by an enterprise account.
Self-hosted runner groups are used to control access to self-hosted runners at the organization and enterprise level. Enterprise admins can configure access policies that control which organizations in an enterprise have access to the runner group. Organization admins can configure access policies that control which repositories in an organization have access to the runner group.
When an enterprise admin grants an organization access to a runner group, organization admins can see the runner group listed in the organization's self-hosted runner settings. The organizations admins can then assign additional granular repository access policies to the enterprise runner group.
When new runners are created, they are automatically assigned to the default group. Runners can only be in one group at a time. You can move runners from the default group to another group. For more information, see "Moving a self-hosted runner to a group."
Creating a self-hosted runner group for an organization
All organizations have a single default self-hosted runner group. Organizations within an enterprise account can create additional self-hosted groups. Organization admins can allow individual repositories access to a runner group.
Self-hosted runners are automatically assigned to the default group when created, and can only be members of one group at a time. You can move a runner from the default group to any group you create.
When creating a group, you must choose a policy that defines which repositories have access to the runner group.
-
On GitHub, navigate to the main page of the organization.
-
Under your organization name, click Settings.
-
In the left sidebar, click Actions.
-
In the Self-hosted runners section, click Add new, and then New group.
-
Enter a name for your runner group, and assign a policy for repository access.
You can configure a runner group to be accessible to a specific list of repositories, or to all repositories in the organization. By default, only private repositories can access runners in a runner group, but you can override this.
Warning
We recommend that you only use self-hosted runners with private repositories. This is because forks of your repository can potentially run dangerous code on your self-hosted runner machine by creating a pull request that executes the code in a workflow.
For more information, see "About self-hosted runners."
-
Click Save group to create the group and apply the policy.
Creating a self-hosted runner group for an enterprise
Enterprises can add their self-hosted runners to groups for access management. Enterprises can create groups of self-hosted runners that are accessible to specific organizations in the enterprise account. Organization admins can then assign additional granular repository access policies to the enterprise runner groups.
Self-hosted runners are automatically assigned to the default group when created, and can only be members of one group at a time. You can assign the runner to a specific group during the registration process, or you can later move the runner from the default group to a custom group.
When creating a group, you must choose a policy that defines which organizations have access to the runner group.
-
In the top-right corner of GitHub, click your profile photo, then click Your enterprises.
-
In the list of enterprises, click the enterprise you want to view.
-
In the enterprise sidebar, click Policies.
-
Under " Policies", click Actions.
-
Click the Self-hosted runners tab.
-
Click Add new, and then New group.
-
Enter a name for your runner group, and assign a policy for organization access.
You can configure a runner group to be accessible to a specific list of organizations, or all organizations in the enterprise. By default, only private repositories can access runners in a runner group, but you can override this.
Warning
We recommend that you only use self-hosted runners with private repositories. This is because forks of your repository can potentially run dangerous code on your self-hosted runner machine by creating a pull request that executes the code in a workflow.
For more information, see "About self-hosted runners."
-
Click Save group to create the group and apply the policy.
Changing the access policy of a self-hosted runner group
You can update the access policy of a runner group, or rename a runner group.
-
In the Self-hosted runners section of the settings page, click next to the runner group you'd like to configure, then click Edit name and [organization|repository] access.
-
Modify your policy options, or change the runner group name.
Warning
We recommend that you only use self-hosted runners with private repositories. This is because forks of your repository can potentially run dangerous code on your self-hosted runner machine by creating a pull request that executes the code in a workflow.
For more information, see "About self-hosted runners."
Moving a self-hosted runner to a group
New self-hosted runners are automatically assigned to the default group, and can then be moved to another group.
- In the Self-hosted runners section of the settings page, locate the current group of the runner you want to move and expand the list of group members.
- Select the checkbox next to the self-hosted runner, and then click Move to group to see the available destinations.
- To move the runner, click on the destination group.
Removing a self-hosted runner group
Self-hosted runners are automatically returned to the default group when their group is removed.
-
In the Self-hosted runners section of the settings page, locate the group you want to delete, and click the button.
-
To remove the group, click Remove group.
-
Review the confirmation prompts, and click Remove this runner group.