Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/sync-llms-txt.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:
app-id: ${{ secrets.DOCS_BOT_APP_ID }}
private-key: ${{ secrets.DOCS_BOT_APP_PRIVATE_KEY }}
owner: github
repositories: github,docs-internal,docs-engineering
repositories: github,docs-internal,docs-engineering,docs-internal-data

- uses: ./.github/actions/node-npm-setup

Expand Down
10 changes: 10 additions & 0 deletions config/moda/secrets/production/secrets.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,16 @@ secrets:
type: salt
owner: '@github/docs-engineering'
externally_usable: true
DOCS_BOT_APP_ID:
kind: latest_at_deployment_start
type: github_app
owner: '@github/docs-engineering'
externally_usable: true
DOCS_BOT_APP_PRIVATE_KEY:
kind: latest_at_deployment_start
type: github_app
owner: '@github/docs-engineering'
externally_usable: true
DOCS_BOT_PAT_BASE:
kind: latest_at_deployment_start
type: github_pat
Expand Down
39 changes: 17 additions & 22 deletions content/actions/concepts/runners/larger-runners.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: Larger runners
intro: Learn about the types and uses of {% data variables.product.prodname_dotcom %}-hosted {% data variables.actions.hosted_runners %}.
intro: Organize and govern your workflows with {% data variables.product.prodname_dotcom %}-hosted larger runners using runner groups, concurrency policies, and granular access controls.
permissions: '{% data reusables.actions.larger-runner-permissions %}'
versions:
fpt: '*'
Expand All @@ -25,7 +25,20 @@ To learn about larger runners, see [the {% data variables.product.prodname_ghe_c

{% data reusables.actions.about-larger-runners %}

{% data variables.product.prodname_dotcom %} offers {% data variables.actions.hosted_runners %} with macOS, Ubuntu, or Windows operating systems, and different features and sizes are available depending on which operating system you use.
## What you can do with larger runners

All {% data variables.actions.hosted_runners %} support the following capabilities:

* **Runner groups**: Organize runners and control which repositories can use them
* **Autoscaling**: Scale runners up or down based on workload demand
* **Concurrency controls**: Limit how many jobs can run at the same time

The following capabilities are available only on Linux and Windows runners:

* **Static IP addresses**: Assign static IP addresses from a specific range to runners, allowing you to configure firewall allowlists.
* **Custom images**: Use custom runner images to pre-install dependencies and reduce setup time.
* **Azure private networking**: Connect your runners to Azure private networks.


{% ifversion default-setup-larger-runners %}

Expand All @@ -41,23 +54,6 @@ For more information on configuring {% data variables.actions.hosted_runners %}

{% endif %}

## About Ubuntu and Windows {% data variables.actions.hosted_runners %}

{% data variables.actions.hosted_runner_caps %}s with Ubuntu or Windows operating systems are configured in your organization or enterprise. When you add a {% data variables.actions.hosted_runner %}, you are defining a type of machine from a selection of available hardware specifications and operating system images.

With Ubuntu and Windows {% data variables.actions.hosted_runners %}, you can:

* Assign runners static IP addresses from a specific range, allowing you to use this range to configure a firewall allowlist
* Control access to your resources by assigning runners to runner groups
* Use autoscaling to simplify runner management and control your costs
* Use your runners with Azure private networking

## About macOS {% data variables.actions.hosted_runners %}

{% data variables.actions.hosted_runner_caps %}s with a macOS operating system are not manually added to your organization or enterprise, but are instead used by updating the `runs-on` key of a workflow file to one of the {% data variables.product.company_short %}-defined macOS {% data variables.actions.hosted_runner %} labels.

Since macOS {% data variables.actions.hosted_runners %} are not preconfigured, they have limitations that Ubuntu and Windows {% data variables.actions.hosted_runners %} do not. For more information, see [AUTOTITLE](/actions/reference/larger-runners-reference#limitations-for-macos-larger-runners).

## Billing

> [!NOTE]
Expand All @@ -67,10 +63,9 @@ Compared to standard {% data variables.product.github %}-hosted runners, {% data

## Next steps

To start using Windows or Ubuntu {% data variables.actions.hosted_runners %}, see [AUTOTITLE](/actions/how-tos/using-github-hosted-runners/using-larger-runners/managing-larger-runners).

To start using macOS {% data variables.actions.hosted_runners %}, see [AUTOTITLE](/actions/how-tos/using-github-hosted-runners/using-larger-runners/running-jobs-on-larger-runners?platform=mac).
To start using larger runners, see [AUTOTITLE](/actions/how-tos/using-github-hosted-runners/using-larger-runners/managing-larger-runners).

To find reference information about using {% data variables.actions.hosted_runners %}, see [AUTOTITLE](/actions/reference/larger-runners-reference).

{% endif %}

13 changes: 12 additions & 1 deletion content/actions/concepts/runners/runner-groups.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: Runner groups
intro: Learn about what a runner group is, and how to use them to control access to runners at the organization{% ifversion ghec or ghes %} and/or enterprise levels{% else %} level.{% endif %}
intro: Use runner groups to control access to runners and organize runners across your organization or enterprise.
versions:
fpt: '*'
ghec: '*'
Expand All @@ -16,6 +16,17 @@ contentType: concepts

{% data reusables.actions.about-runner-groups %}

Runner groups help you enforce consistent access policies for runners across your infrastructure.

With runner groups, you can:

* Organize {% data variables.actions.hosted_runners %} and self-hosted runners
* Restrict which organizations and repositories can use specific runners
* Route jobs to a specific runner group in your workflow file
* Set concurrency limits to control costs and capacity

You can also disable standard {% data variables.product.github %}-hosted runners, to require Linux, Windows, and macOS jobs to run through runner groups instead of standard runner labels. For organization-level settings, see [AUTOTITLE](/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization). If you're an enterprise owner, see [AUTOTITLE](/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise).

## Next steps

{% ifversion fpt or ghec %}To learn how to use runner groups to control access to larger runners, see [AUTOTITLE](/actions/how-tos/using-larger-runners/controlling-access-to-larger-runners).{% endif %}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,6 @@ category:
- Use and manage runners
---

> [!NOTE]
> {% data reusables.actions.windows-linux-larger-runners-note %}
## Managing access to larger runners

> [!NOTE]
Expand Down Expand Up @@ -102,6 +99,8 @@ For runner groups in an organization, you can change what repositories in the or

If you have configured your {% ifversion ghec %}enterprise or {% endif %}organization to connect to an Azure VNET, you can give runner groups access to the virtual network. For more information, see [AUTOTITLE](/actions/using-github-hosted-runners/connecting-to-a-private-network/about-private-networking-with-github-hosted-runners#using-an-azure-virtual-network-vnet).

{% data reusables.actions.macos-networking-limitation %}

{% endif %}

## Changing the name of a runner group
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,6 @@ category:
contentType: how-tos
---

> [!NOTE]
> * {% data reusables.actions.windows-linux-larger-runners-note %}

{% ifversion ghec %}

## Adding a {% data variables.actions.hosted_runner %} to an enterprise
Expand Down Expand Up @@ -68,6 +65,8 @@ Once a repository has access to {% data variables.actions.hosted_runner %}s, the
> {% data reusables.actions.hosted-runner-security %}
> For more information, see [AUTOTITLE](/actions/using-github-hosted-runners/controlling-access-to-larger-runners).

If you want to require workflows to target runners only through runner groups, you can disable standard {% data variables.product.github %}-hosted runners at the organization or enterprise level. See [AUTOTITLE](/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization) and [AUTOTITLE](/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise).

## Changing the name of a {% data variables.actions.hosted_runner %}

{% data reusables.actions.larger-runner-name-note %}
Expand Down Expand Up @@ -193,7 +192,8 @@ You can control the maximum number of jobs allowed to run concurrently for speci
## Creating static IP addresses for {% data variables.actions.hosted_runner %}s

> [!NOTE]
> To use static IP addresses, your organization must use {% data variables.product.prodname_ghe_cloud %}. {% data reusables.enterprise.link-to-ghec-trial %}
> * To use static IP addresses, your organization must use {% data variables.product.prodname_ghe_cloud %}. {% data reusables.enterprise.link-to-ghec-trial %}
> * macOS {% data variables.actions.hosted_runner %}s do not support static IP addresses.

You can enable static IP addresses for {% data variables.actions.hosted_runner %}s. When you do this, the {% data variables.actions.hosted_runner %}s are assigned static IP address ranges. All IP addresses in the range assigned are usable. By default, you can configure up to 10 different {% data variables.actions.hosted_runner %}s with IP ranges for your account. {% data reusables.actions.larger-runner-static-ip-contact-support %}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: Running jobs on larger runners
shortTitle: Use larger runners
intro: You can speed up your workflows by configuring them to run on {% data variables.actions.hosted_runner %}s.
intro: Identify available {% data variables.actions.hosted_runner %}s, then route jobs to the right runners by using runner groups and workflow labels.
permissions: '{% data reusables.actions.larger-runner-permissions %}'
defaultPlatform: linux
versions:
Expand All @@ -17,39 +17,9 @@ category:
contentType: how-tos
---

## Running jobs on your runner

{% linux %}

{% data reusables.actions.run-jobs-larger-runners %}

{% endlinux %}

{% windows %}

{% data reusables.actions.run-jobs-larger-runners %}

{% endwindows %}

{% mac %}

Once your runner type has been defined, you can update your workflow YAML files to send jobs to runner instances for processing. To run jobs on macOS {% data variables.actions.hosted_runner %}s, update the `runs-on` key in your workflow YAML files to use one of the {% data variables.product.company_short %}-defined labels for macOS runners. For more information, see [Available macOS {% data variables.actions.hosted_runner %}s](#available-macos-larger-runners).

{% endmac %}

{% mac %}

## Available macOS {% data variables.actions.hosted_runner %}s

Use the labels in the table below to run your workflows on the corresponding macOS {% data variables.actions.hosted_runner %}.

{% data reusables.actions.larger-runners-table %}

{% endmac %}

{% ifversion repository-actions-runners %}

## Viewing available runners for a repository
## Identifying available runners for a repository

{% data reusables.actions.about-viewing-runner-list %}

Expand All @@ -63,27 +33,57 @@ Use the labels in the table below to run your workflows on the corresponding mac

{% endif %}

{% linux %}
## Targeting larger runners in a workflow

After you identify the {% data variables.actions.hosted_runner %}s you want to use, you can target them in your workflow with runner groups, workflow labels, or both. Use runner groups to route jobs to a set of runners, workflow labels to target runners with a specific label, or both when a job must match both conditions.

## Using groups to control where jobs are run
If an administrator has disabled standard {% data variables.product.github %}-hosted runners, you can only use runner groups.

### Targeting by runner group

Reference the runner group name in your workflow. Use this when you want to route a job to any available runner in a specific group.

{% linux %}

{% data reusables.actions.jobs.example-runs-on-groups %}

{% endlinux %}

{% windows %}

## Using groups to control where jobs are run

{% data reusables.actions.jobs.example-runs-on-groups %}

{% endwindows %}

{% linux %}
{% mac %}

In this example, the `runs-on` key sends the job to any available runner in the `macos-build-runners` group:

```yaml
name: learn-github-actions
on: [push]
jobs:
check-swift-version:
runs-on:
group: macos-build-runners
steps:
- uses: {% data reusables.actions.action-checkout %}
- name: Build
run: swift build
- name: Run tests
run: swift test
```

{% endmac %}

### Targeting by workflow label

Reference a workflow label in your workflow when you want to route a job to runners that share a specific label.

## Using labels to control where jobs are run
{% data variables.actions.hosted_runner_caps %}s are automatically assigned a workflow label that matches the runner name.

{% data reusables.actions.runner-labels-implicit %}

{% linux %}

In this example, the `runs-on` key sends the job to any available runner that has been assigned the `ubuntu-24.04-16core` label:

Expand All @@ -103,16 +103,10 @@ jobs:
- run: bats -v
```

{% data reusables.actions.runner-labels %}

{% endlinux %}

{% windows %}

## Using labels to control where jobs are run

{% data reusables.actions.runner-labels-implicit %}

In this example, the `runs-on` key sends the job to any available runner that has been assigned the `windows-2022-16core` label:

```yaml
Expand All @@ -131,23 +125,19 @@ jobs:
- run: bats -v
```

{% data reusables.actions.runner-labels %}

{% endwindows %}

{% mac %}

## Targeting macOS {% data variables.actions.hosted_runner %}s in a workflow

To run your workflows on macOS {% data variables.actions.hosted_runner %}s, set the value of the `runs-on` key to a label associated with a macOS {% data variables.actions.hosted_runner %}. For a list of macOS {% data variables.actions.hosted_runner %} labels, see [Available macOS {% data variables.actions.hosted_runner %}s](#available-macos-larger-runners).
For macOS {% data variables.actions.hosted_runners %}, you can use either {% data variables.product.prodname_dotcom %}-defined workflow labels or the workflow label that is automatically assigned from the {% data variables.actions.hosted_runner %} name you set when you create it. For a list of available macOS workflow labels, see [AUTOTITLE](/actions/reference/runners/larger-runners#available-macos-larger-runners-and-labels).

In this example, the workflow uses a label that is associated with macOS XL runners. The `runs-on` key sends the job to any available runner with a matching label:
In this example, the `runs-on` key sends the job to any available runner that has been assigned the `macos-26-xlarge` label.

```yaml
name: learn-github-actions-testing
name: learn-github-actions
on: [push]
jobs:
build:
check-swift-version:
runs-on: macos-26-xlarge
steps:
- uses: {% data reusables.actions.action-checkout %}
Expand All @@ -159,45 +149,46 @@ jobs:

{% endmac %}

{% linux %}
### Using labels and groups to control where jobs are run

## Using labels and groups to control where jobs are run
Use both labels and groups when a job must run only on runners in a specific group that also have a specific label. The runner must meet both requirements to be eligible to run the job.

{% data reusables.actions.jobs.example-runs-on-labels-and-groups %}
{% linux %}

{% data reusables.actions.section-using-unique-names-for-runner-groups %}
{% data reusables.actions.jobs.example-runs-on-labels-and-groups %}

{% endlinux %}

{% windows %}

## Using labels and groups to control where jobs are run

{% data reusables.actions.jobs.example-runs-on-labels-and-groups %}

{% data reusables.actions.section-using-unique-names-for-runner-groups %}

{% endwindows %}

## Troubleshooting {% data variables.actions.hosted_runner %}s

{% linux %}

{% data reusables.actions.larger-runners-troubleshooting-linux-windows %}

{% endlinux %}

{% windows %}
{% mac %}

{% data reusables.actions.larger-runners-troubleshooting-linux-windows %}
In this example, the `runs-on` key combines `group` and `labels` so that the job is routed to any available runner within the group that also has a matching label:

{% endwindows %}
```yaml
name: learn-github-actions
on: [push]
jobs:
check-swift-version:
runs-on:
group: macos-runners
labels: macos-26-xlarge
steps:
- uses: {% data reusables.actions.action-checkout %}
- name: Build
run: swift build
- name: Run tests
run: swift test
```

{% mac %}
{% endmac %}

Because macOS arm64 does not support Node 12, macOS {% data variables.actions.hosted_runner %}s automatically use Node 16 to execute any JavaScript action written for Node 12. Some community actions may not be compatible with Node 16. If you use an action that requires a different Node version, you may need to manually install a specific version at runtime.
## Further reading

> [!NOTE]
> ARM-powered runners are currently in {% data variables.release-phases.public_preview %} and are subject to change.
For syntax details for the `runs-on` key, see [AUTOTITLE](/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idruns-on).

{% endmac %}
For specifications, labels, limitations, and troubleshooting information, see [AUTOTITLE](/actions/reference/runners/larger-runners).
Loading
Loading