Skip to content

Commit

Permalink
macOS runner docs revamp (#40298)
Browse files Browse the repository at this point in the history
Co-authored-by: Siara <[email protected]>
Co-authored-by: SiaraMist <[email protected]>
Co-authored-by: Larissa Fortuna <[email protected]>
  • Loading branch information
4 people authored Oct 2, 2023
1 parent 5e64969 commit 76f7e40
Show file tree
Hide file tree
Showing 11 changed files with 281 additions and 82 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ There are some limits on {% data variables.product.prodname_actions %} usage whe
- **Job execution time** - Each job in a workflow can run for up to 6 hours of execution time. If a job reaches this limit, the job is terminated and fails to complete.
{% data reusables.actions.usage-workflow-run-time %}
{% data reusables.actions.usage-api-requests %}
- **Concurrent jobs** - The number of concurrent jobs you can run in your account depends on your GitHub plan, as well as the type of runner used. If exceeded, any additional jobs are queued.
- **Concurrent jobs** - The number of concurrent jobs you can run in your account depends on your {% data variables.product.prodname_dotcom %} plan, as well as the type of runner used. If exceeded, any additional jobs are queued.

**Standard {% data variables.product.prodname_dotcom %}-hosted runners**

Expand All @@ -62,7 +62,7 @@ There are some limits on {% data variables.product.prodname_actions %} usage whe

| GitHub plan | Total concurrent jobs | Maximum concurrent macOS jobs |
|---|---|---|
| All | 1000 | Not applicable |
| All | 500 | The limit is based on your {% data variables.product.prodname_dotcom %} plan. |

{% note %}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,32 +110,11 @@ While the job runs, the logs and output can be viewed in the {% data variables.p
{% note %}
**Note**: {% data variables.product.prodname_dotcom %} also offers {% data variables.actions.hosted_runner %}s, which are available in larger configurations, with autoscaling enabled by default and optional dedicated IP addresses. For more information, see "[AUTOTITLE](/actions/using-github-hosted-runners/using-larger-runners#machine-specs-for-larger-runners)."
**Note**: {% data variables.product.prodname_dotcom %} also offers {% data variables.actions.hosted_runner %}s, which are available in larger configurations for Linux, Windows, and macOS virtual machines. Autoscaling is enabled by default and optional dedicated IP addresses are available for Linux and Windows. For more information, see "[AUTOTITLE](/actions/using-github-hosted-runners/using-larger-runners#machine-specs-for-larger-runners)."
{% endnote %}
{% endif %}
Hardware specification for Windows and Linux virtual machines:
- 2-core CPU (x86_64)
- 7 GB of RAM
- 14 GB of SSD space
Hardware specification for macOS virtual machines:
- 3-core CPU (x86_64)
- 14 GB of RAM
- 14 GB of SSD space
Hardware specification for macOS XL virtual machines:
- 12-core CPU (x86_64)
- 30 GB of RAM
- 14 GB of SSD space
{% note %}
**Note:** macOS XL runners are considered {% data variables.actions.hosted_runner %}s and are billed in the same way. This means macOS XL runners are not eligible for the use of included minutes on private repositories. For both private and public repositories, when macOS XL runners are in use, they will always be billed at the per-minute rate. For more information, see "[AUTOTITLE](/actions/using-github-hosted-runners/about-larger-runners#understanding-billing)."
{% endnote %}
{% data reusables.actions.supported-github-runners %}
Workflow logs list the runner used to run a job. For more information, see "[AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/viewing-workflow-run-history)."
Expand Down Expand Up @@ -188,9 +167,7 @@ You can install additional software on {% data variables.product.prodname_dotcom

## Cloud hosts used by {% data variables.product.prodname_dotcom %}-hosted runners

{% data variables.product.prodname_dotcom %} hosts Linux and Windows runners on `Standard_DS2_v2` virtual machines in Microsoft Azure with the {% data variables.product.prodname_actions %} runner application installed. The {% data variables.product.prodname_dotcom %}-hosted runner application is a fork of the Azure Pipelines Agent. Inbound ICMP packets are blocked for all Azure virtual machines, so ping or traceroute commands might not work. For more information about the `Standard_DS2_v2` resources, see "[Dv2 and DSv2-series](https://docs.microsoft.com/azure/virtual-machines/dv2-dsv2-series#dsv2-series)" in the Microsoft Azure documentation.

{% data variables.product.prodname_dotcom %} hosts macOS runners in {% data variables.product.prodname_dotcom %}'s own macOS Cloud.
{% data variables.product.prodname_dotcom %} hosts Linux and Windows runners on `Standard_DS2_v2` virtual machines in Microsoft Azure with the {% data variables.product.prodname_actions %} runner application installed. The {% data variables.product.prodname_dotcom %}-hosted runner application is a fork of the Azure Pipelines Agent. Inbound ICMP packets are blocked for all Azure virtual machines, so ping or traceroute commands might not work. For more information about the `Standard_DS2_v2` resources, see "[Dv2 and DSv2-series](https://docs.microsoft.com/azure/virtual-machines/dv2-dsv2-series#dsv2-series)" in the Microsoft Azure documentation. {% data variables.product.prodname_dotcom %} hosts macOS runners in Azure data centers.

## Workflow continuity

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,53 @@ redirect_from:

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

When you add a {% data variables.actions.hosted_runner %} to an organization, you are defining a type of machine from a selection of available hardware specifications and operating system images. {% data variables.product.prodname_dotcom %} will then create multiple instances of this runner that scale up and down to match the job demands of your organization, based on the autoscaling limits you define.
{% data variables.product.prodname_dotcom %} offers {% data variables.actions.hosted_runner %}s with macOS, Ubuntu, or Windows operating systems, and different features are available depending on which operating system you use. For more information, see "[Additional features for {% data variables.actions.hosted_runner %}s](#additional-features-for-larger-runners)."

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

{% 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. {% data variables.product.prodname_dotcom %} will then create multiple instances of this runner that scale up and down to match the job demands of your organization, based on the autoscaling limits you define. For more information, see "[AUTOTITLE](/actions/using-github-hosted-runners/managing-larger-runners)."

Ubuntu and Windows {% data variables.actions.hosted_runner %}s offer autoscaling capabilities and the ability to assign the runners static IP addresses from a specific range. They can also be managed using runner groups, which enables you to control access to the {% data variables.actions.hosted_runner %}s. For more information, see "[Additional features for {% data variables.actions.hosted_runner %}s](#additional-features-for-larger-runners)."

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

{% data variables.actions.hosted_runner_caps %}s with a macOS operating system are used by updating the YAML workflow label to the desired runner image. To run your workflows on a macOS {% data variables.actions.hosted_runner %}, update the `runs-on` key to use one of the {% data variables.product.company_short %}-defined macOS {% data variables.actions.hosted_runner %} labels. No additional configuration is required. For more information, see "[AUTOTITLE](/actions/using-github-hosted-runners/running-jobs-on-larger-runners?platform=mac)."

The following machines sizes are available for macOS {% data variables.actions.hosted_runner %}s.

| Runner Size | Architecture| Processor (CPU)| Memory (RAM) | Storage (SSD) | YAML workflow label |
| --------------| --------------| -------------- | ------------- | ------------- | --------------------- |
| Large | Intel| 12 | 30 GB | 14 GB | <code>macos-latest-large</code>, <code>macos-12-large </code>, <code>macos-13-large</code>[Beta] |
| XLarge| arm64 (M1)|6 CPU and 8 GPU| 14 GB | 14 GB | <code>macos-latest-xlarge</code>[Beta], <code>macos-13-xlarge</code>[Beta] |

#### Limitations for macOS {% data variables.actions.hosted_runner %}s

- All actions provided by GitHub are compatible with arm64 Github-hosted runners. However, community actions may not be compatible with arm64 and need to be manually installed at runtime. For more information, see "[AUTOTITLE](/actions/using-github-hosted-runners/running-jobs-on-larger-runners?platform=mac#troubleshooting-larger-runners)."
- Due to a limitation of Apple's Virtualization Framework, which our hypervisor uses, nested-virtualization is not supported by arm64 runners.

### Additional features for {% data variables.actions.hosted_runner %}s

Compared to standard {% data variables.product.prodname_dotcom %}-hosted runners, {% data variables.actions.hosted_runner %}s have additional features, and their availability varies depending on the {% data variables.actions.hosted_runner %}'s operating system.

{% rowheaders %}

| Operating system | Ubuntu | Windows | macOS |
| -------------------------------------------- | ------ | ------- | ----- |
| Hardware acceleration for Android SDK tools | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "x" aria-label="Not supported" %} |
| Static IP addresses | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} |
| Autoscaling | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} |
| Runner groups | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} |

{% endrowheaders %}

These features can enhance your CI/CD pipelines in the following ways.

- Hardware acceleration for the Android SDK tools makes running Android tests much faster and consumes fewer minutes. For more information on Android hardware acceleration, see [Configure hardware acceleration for the Android Emulator](https://developer.android.com/studio/run/emulator-acceleration) in the Android Developers documentation.
- Assigning {% data variables.actions.hosted_runner %}s static IP addresses from a specific range enables you to use this range to configure a firewall allowlist. For more information, see "[Networking for {% data variables.actions.hosted_runner %}s](#networking-for-larger-runners)."
- Autoscaling enables {% data variables.actions.hosted_runner %}s to scale up to a maximum limit set by you, so your workflows can run concurrently. For more information, see "[Autoscaling {% data variables.actions.hosted_runner %}s](#autoscaling-larger-runners)."
- Runner groups allow you to control access to {% data variables.actions.hosted_runner %}s for your organizations, repositories, and workflows. For more information, see "[AUTOTITLE](/actions/using-github-hosted-runners/controlling-access-to-larger-runners)."

For a full list of included tools for each runner operating system, see the [{% data variables.product.prodname_actions %} Runner Images](https://github.com/actions/runner-images) repository.

### Understanding billing

Expand All @@ -29,34 +75,31 @@ Compared to standard {% data variables.product.prodname_dotcom %}-hosted runners

| Processor (CPU)| Memory (RAM) | Storage (SSD) | Operating system (OS) |
| -------------- | ------------- | ------------- | --------------------- |
| 6 | 14 GB | 14 GB | macOS |
| 12 | 30 GB | 14 GB | macOS |
| 4 | 16 GB | 150 GB | Ubuntu |
| 8 | 32 GB | 300 GB | Ubuntu, Windows |
| 16 | 64 GB | 600 GB | Ubuntu, Windows |
| 32 | 128 GB | 1200 GB | Ubuntu, Windows |
| 64 | 256 GB | 2040 GB | Ubuntu, Windows |

## About runner groups

{% note %}

**Note**: macOS runners are also available in larger sizes and are billed the same way as {% data variables.actions.hosted_runner %}s. For information on how to access macOS runners, see "[AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources)."
**Note:** Only {% data variables.actions.hosted_runner %}s with Linux or Windows operating systems can be assigned to runner groups.

{% endnote %}

### Additional features for {% data variables.actions.hosted_runner %}s

Compared to standard {% data variables.product.prodname_dotcom %}-hosted runners, {% data variables.actions.hosted_runner %}s have the following additional features:

- For Ubuntu runners, hardware acceleration for the Android SDK tools is enabled. This makes running Android tests much faster and consumes fewer minutes. For more information on Android hardware acceleration, see [Configure hardware acceleration for the Android Emulator](https://developer.android.com/studio/run/emulator-acceleration) in the Android Developers documentation.
- {% data variables.actions.hosted_runner_caps %}s can be assigned static IP addresses from specific ranges, which enables you to use the ranges to configure a firewall allowlist. For more information, see "[Networking for {% data variables.actions.hosted_runner %}s](#networking-for-larger-runners)."
- {% data variables.actions.hosted_runner_caps %}s can automatically scale up to a maximum limit set by you, so your workflows can run concurrently. For more information, see "[Autoscaling {% data variables.actions.hosted_runner %}s](#autoscaling-larger-runners)."
- Runner groups allow you to control access to {% data variables.actions.hosted_runner %}s for your organizations, repositories, and workflows. For more information, see "[AUTOTITLE](/actions/using-github-hosted-runners/controlling-access-to-larger-runners)."
Runner groups enable administrators to control access to runners at the organization and enterprise levels. With runner groups, you can collect sets of runners and create a security boundary around them. You can then decide which organizations or repositories are permitted to run jobs on those sets of machines. During the {% data variables.actions.hosted_runner %} deployment process, the runner can be added to an existing group, otherwise it will join a default group. You can create a group by following the steps in "[AUTOTITLE](/actions/using-github-hosted-runners/controlling-access-to-larger-runners)."

For a full list of included tools for each runner operating system, see the [{% data variables.product.prodname_actions %} Runner Images](https://github.com/actions/runner-images) repository.
## Architectural overview of {% data variables.actions.hosted_runner %}s

## About runner groups
{% note %}

Runner groups enable administrators to control access to runners at the organization and enterprise levels. With runner groups, you can collect sets of runners and create a security boundary around them. You can then decide which organizations or repositories are permitted to run jobs on those sets of machines. During the {% data variables.actions.hosted_runner %} deployment process, the runner can be added to an existing group, otherwise it will join a default group. You can create a group by following the steps in "[AUTOTITLE](/actions/using-github-hosted-runners/controlling-access-to-larger-runners)."
**Note:** This architecture diagram only applies to {% data variables.actions.hosted_runner %}s with Linux or Windows operating systems.

## Architectural overview of {% data variables.actions.hosted_runner %}s
{% endnote %}

{% data variables.actions.hosted_runner_caps %}s are managed at the organization level, where they are arranged into groups that can contain multiple instances of the runner. They can also be created at the enterprise level and shared with organizations in the hierarchy. Once you've created a group, you can then add a runner to the group and update your workflows to target either the group name or the label assigned to the {% data variables.actions.hosted_runner %}. You can also control which repositories are permitted to send jobs to the group for processing. For more information about groups, see "[AUTOTITLE](/actions/using-github-hosted-runners/controlling-access-to-larger-runners)."

Expand All @@ -72,13 +115,25 @@ In the following diagram, a class of hosted runner named `ubuntu-20.04-16core` h

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

{% note %}

**Note:** Autoscaling is only available for {% data variables.actions.hosted_runner %}s with Linux or Windows operating systems.

{% endnote %}

{% data variables.actions.hosted_runner_caps %}s can automatically scale to suit your needs. You can provision machines to run a specified maximum number of jobs when jobs are submitted for processing. Each machine only handles one job at a time, so these settings effectively determine the number of jobs that can be run concurrently.

You can configure the maximum job concurrency, which allows you to control your costs by setting the maximum parallel number of jobs that can be run using this set. A higher value here can help avoid workflows being blocked due to parallelism. For more information, see "[AUTOTITLE](/actions/using-github-hosted-runners/managing-larger-runners#configuring-autoscaling-for-larger-runners)."

## Networking for {% data variables.actions.hosted_runner %}s

By default, {% data variables.actions.hosted_runner %}s receive a dynamic IP address that changes for each job run. Optionally, {% data variables.product.prodname_ghe_cloud %} customers can configure their {% data variables.actions.hosted_runner %}s to receive static IP addresses from {% data variables.product.prodname_dotcom %}'s IP address pool. For more information, see "[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/about-githubs-ip-addresses)."
{% note %}

**Note:** Assigning static IP addresses to runners is only available for {% data variables.actions.hosted_runner %}s with Linux or Windows operating systems.

{% endnote %}

By default, {% data variables.actions.hosted_runner %}s receive a dynamic IP address that changes for each job run. Optionally, {% data variables.product.prodname_ghe_cloud %} customers can configure their {% data variables.actions.hosted_runner %}s to receive a static IP address from {% data variables.product.prodname_dotcom %}'s IP address pool. For more information, see "[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/about-githubs-ip-addresses)."

When enabled, instances of the {% data variables.actions.hosted_runner %} will receive IP addresses from specific ranges that are unique to the runner, allowing you to use the ranges to configure a firewall allowlist. {% ifversion fpt %}You can use up to 10 {% data variables.actions.hosted_runner %}s with static IP address ranges in total across all your {% data variables.actions.hosted_runner %}s{% endif %}{% ifversion ghec %}You can use up to 10 {% data variables.actions.hosted_runner %}s with static IP address ranges for the {% data variables.actions.hosted_runner %}s created at the enterprise level. In addition, you can use up to 10 {% data variables.actions.hosted_runner %}s with static IP address ranges for the {% data variables.actions.hosted_runner %}s created at the organization level, for each organization in your enterprise{% endif %}. For more information, see "[AUTOTITLE](/actions/using-github-hosted-runners/managing-larger-runners#networking-for-larger-runners)."

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ redirect_from:

{% data reusables.actions.enterprise-github-hosted-runners %}

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

## About runner groups

{% data reusables.actions.about-runner-groups %}
Expand Down
Loading

0 comments on commit 76f7e40

Please sign in to comment.