Table of Contents
This repository contains the source code used to create the VM images for GitHub-hosted runners used for Actions, as well as for Microsoft-hosted agents used for Azure Pipelines. To build a VM machine from this repo's source, see the instructions.
| Image | Architecture | YAML Label | Included Software |
|---|---|---|---|
| Ubuntu 26.04 | x64 | ubuntu-26.04 | ubuntu-26.04 |
| Ubuntu 26.04 Arm64 | arm64 | ubuntu-26.04-arm | ubuntu-26.04-arm64 |
| Ubuntu 24.04 | x64 | ubuntu-latest or ubuntu-24.04 | ubuntu-24.04 |
| Ubuntu 24.04 Arm64 | arm64 | ubuntu-24.04-arm | ubuntu-24.04-arm64 |
| Ubuntu 22.04 | x64 | ubuntu-22.04 | ubuntu-22.04 |
| Ubuntu 22.04 Arm64 | arm64 | ubuntu-22.04-arm | ubuntu-22.04-arm64 |
| Ubuntu Slim | x64 | ubuntu-slim | ubuntu-slim |
| Xcode 27 | arm64 | xcode-27 or xcode-27-xlarge | xcode-27 |
| macOS 26 | x64 | macos-latest-large, macos-26-intel, macos-26-large | macOS-26 |
| macOS 26 Arm64 | arm64 | macos-latest, macos-26 or macos-26-xlarge | macOS-26-arm64 |
| macOS 15 | x64 | macos-15-large, or macos-15-intel | macOS-15 |
| macOS 15 Arm64 | arm64 | macos-15, or macos-15-xlarge | macOS-15-arm64 |
| macOS 14 | x64 | macos-14-large | macOS-14 |
| macOS 14 Arm64 | arm64 | macos-14 or macos-14-xlarge | macOS-14-arm64 |
| Windows Server 2025 | x64 | windows-latest, windows-2025, or windows-2025-vs2026 | windows-2025-vs2026 |
| Windows Server 2022 | x64 | windows-2022 | windows-2022 |
| Windows 11 Arm64 | arm64 | windows-11-arm | windows-11-arm64 |
| Windows 11 Arm64 with Visual Studio 2026 | arm64 | windows-11-vs2026-arm | windows-11-vs2026-arm64 |
-latest label is used for the latest OS image version that is GA.-latest label to a new OS version we will announce the change and give sufficient lead time for users to update their workflows.-xlarge and -large suffixes are unique to macOS images and are only available for GitHub Actions. Learn more about GitHub Actions larger runners.See notable upcoming changes by viewing issues with the Announcement label.
The purpose of a Beta is to collect feedback on an image before it is released to GA. The goal of a Beta is to identify and fix any potential issues that exist on that image. Images are updated on a weekly cadence. Any workflows that run on a beta image do not fall under the customer SLA in place for Actions. Customers choosing to use Beta images are encouraged to provide feedback in the runner-images repo by creating an issue. A Beta may take on different availability, i.e. public vs private.
A GA (General Availability) image has been through a Beta period and is deemed ready for general use. Images are updated on a weekly cadence. In order to be moved to GA the image must meet the following criteria:
This image type falls under the customer SLA for actions. GA images are eventually deprecated according to our guidelines as we only support the latest 2 versions of an OS.
GitHub Actions and Azure DevOps use the -latest YAML label (ex: ubuntu-latest, windows-latest, and macos-latest). These labels point towards the newest stable OS version available.
The -latest migration process is gradual and happens over 1-2 months in order to allow customers to adapt their workflows to the newest OS version. During this process, any workflow using the -latest label, may see changes in the OS version in their workflows or pipelines. To avoid unwanted migration, users can specify a specific OS version in the yaml file (ex: macos-14, windows-2022, ubuntu-22.04).
How to best follow along with changes
Find the latest releases for this repository here.
Subscribe to the releases coming out of this repository, instructions here.
Upcoming changes: A pre-release is created when the deployment of an image has started. As soon as the deployment is finished, the pre-release is converted to a release. If you have subscribed to releases, you will get notified of pre-releases as well.
For high impact changes, we will post these in advance to the GitHub Changelog on our blog and on X.
Cadence
Tools and versions will typically be removed 6 months after they are deprecated or have reached end-of-life
We support (at maximum) 2 GA images and 1 beta image at a time. We begin the deprecation process of the oldest image label once the newest OS image label has been released to GA.
The images generally contain the latest versions of packages installed except for Ubuntu LTS where we mostly rely on the Canonical-provided repositories.
Popular tools can have several versions installed side-by-side with the following strategy:
| Tool name | Installation strategy |
|---|---|
| Docker images | not more than 3 latest LTS OS\tool versions. New images or new versions of current images are added using the standard tool request process |
| Java | all LTS versions |
| Node.js | 3 latest LTS versions |
| Go | 3 latest minor versions |
| Python Ruby | 5 most popular major.minor versions |
| PyPy | 3 most popular major.minor versions |
| .NET Core | 2 latest LTS versions and 1 latest version. For each feature version only latest patch is installed. Note for Ubuntu images see details. |
| GCC GNU Fortran Clang GNU C++ | 3 latest major versions |
| Android NDK | 1 latest non-LTS, 2 latest LTS versions |
| Xcode | - only one major version of Xcode will be supported per macOS version - all minor versions of the supported major version will be available - beta and RC versions will be provided "as-is" in the latest available macOS image only no matter of beta/GA status of the image - when a new patch version is released, the previous patch version will be replaced |
| Xcode Platforms | - only three major.minor versions of platform tools and simulator runtimes will be available for installed Xcode, including beta/RC versions |
We use third-party package managers to install software during the image generation process. The table below lists the package managers and the software installed.
[!NOTE] Third-party repositories are re-evaluated every year to identify if they are still useful and secure.
| Operating system | Package manager | Third-party repos and packages |
|---|---|---|
| Ubuntu | APT | docker Eclipse-Temurin (Adoptium) Erlang Firefox git-lfs git Google Cloud CLI Heroku HHvm MongoDB Mono MS Edge PostgreSQL R |
| pipx | ansible-core yamllint | |
| Windows | Chocolatey | No third-party repos installed |
| macOS | Homebrew | aws-cli v2 azure/bicep mongodb/brew |
| pipx | yamllint |
In general, these are the guidelines we follow when deciding what to pre-install on our images:
The availability of images for GitHub Actions and Azure DevOps is the same. However, deprecation policies may differ. See documentation for more details:
Usually, image deployment takes 2-3 days, and documentation in the main branch is only updated when deployment is finished. To find out which image version and what software versions are used in a specific build, see Set up job (GitHub Actions) or Initialize job (Azure DevOps) step log.
We do not plan to offer other Linux distributions. We recommend using Docker if you'd like to build using other distributions with the hosted runner images. Alternatively, you can leverage self-hosted runners and fully customize your VM image to your needs.
macOS source lives in this repository and is available for everyone. However, macOS image-generation CI doesn't support external contributions yet so we are not able to accept pull-requests for now.
We are in the process of preparing macOS CI to accept contributions. Until then, we appreciate your patience and ask you to continue to make tool requests by filing issues.
For some tools, we always install the latest at the time of the deployment; for others, we pin the tool to specific version(s). For more details please see the Preinstallation Policy
(top 30 of 322)
PowerShell
61.0%
Shell
22.0%
HCL
16.3%
Table of Contents
This repository contains the source code used to create the VM images for GitHub-hosted runners used for Actions, as well as for Microsoft-hosted agents used for Azure Pipelines. To build a VM machine from this repo's source, see the instructions.
| Image | Architecture | YAML Label | Included Software |
|---|---|---|---|
| Ubuntu 26.04 | x64 | ubuntu-26.04 | ubuntu-26.04 |
| Ubuntu 26.04 Arm64 | arm64 | ubuntu-26.04-arm | ubuntu-26.04-arm64 |
| Ubuntu 24.04 | x64 | ubuntu-latest or ubuntu-24.04 | ubuntu-24.04 |
| Ubuntu 24.04 Arm64 | arm64 | ubuntu-24.04-arm | ubuntu-24.04-arm64 |
| Ubuntu 22.04 | x64 | ubuntu-22.04 | ubuntu-22.04 |
| Ubuntu 22.04 Arm64 | arm64 | ubuntu-22.04-arm | ubuntu-22.04-arm64 |
| Ubuntu Slim | x64 | ubuntu-slim | ubuntu-slim |
| Xcode 27 | arm64 | xcode-27 or xcode-27-xlarge | xcode-27 |
| macOS 26 | x64 | macos-latest-large, macos-26-intel, macos-26-large | macOS-26 |
| macOS 26 Arm64 | arm64 | macos-latest, macos-26 or macos-26-xlarge | macOS-26-arm64 |
| macOS 15 | x64 | macos-15-large, or macos-15-intel | macOS-15 |
| macOS 15 Arm64 | arm64 | macos-15, or macos-15-xlarge | macOS-15-arm64 |
| macOS 14 | x64 | macos-14-large | macOS-14 |
| macOS 14 Arm64 | arm64 | macos-14 or macos-14-xlarge | macOS-14-arm64 |
| Windows Server 2025 | x64 | windows-latest, windows-2025, or windows-2025-vs2026 | windows-2025-vs2026 |
| Windows Server 2022 | x64 | windows-2022 | windows-2022 |
| Windows 11 Arm64 | arm64 | windows-11-arm | windows-11-arm64 |
| Windows 11 Arm64 with Visual Studio 2026 | arm64 | windows-11-vs2026-arm | windows-11-vs2026-arm64 |
-latest label is used for the latest OS image version that is GA.-latest label to a new OS version we will announce the change and give sufficient lead time for users to update their workflows.-xlarge and -large suffixes are unique to macOS images and are only available for GitHub Actions. Learn more about GitHub Actions larger runners.See notable upcoming changes by viewing issues with the Announcement label.
The purpose of a Beta is to collect feedback on an image before it is released to GA. The goal of a Beta is to identify and fix any potential issues that exist on that image. Images are updated on a weekly cadence. Any workflows that run on a beta image do not fall under the customer SLA in place for Actions. Customers choosing to use Beta images are encouraged to provide feedback in the runner-images repo by creating an issue. A Beta may take on different availability, i.e. public vs private.
A GA (General Availability) image has been through a Beta period and is deemed ready for general use. Images are updated on a weekly cadence. In order to be moved to GA the image must meet the following criteria:
This image type falls under the customer SLA for actions. GA images are eventually deprecated according to our guidelines as we only support the latest 2 versions of an OS.
GitHub Actions and Azure DevOps use the -latest YAML label (ex: ubuntu-latest, windows-latest, and macos-latest). These labels point towards the newest stable OS version available.
The -latest migration process is gradual and happens over 1-2 months in order to allow customers to adapt their workflows to the newest OS version. During this process, any workflow using the -latest label, may see changes in the OS version in their workflows or pipelines. To avoid unwanted migration, users can specify a specific OS version in the yaml file (ex: macos-14, windows-2022, ubuntu-22.04).
How to best follow along with changes
Find the latest releases for this repository here.
Subscribe to the releases coming out of this repository, instructions here.
Upcoming changes: A pre-release is created when the deployment of an image has started. As soon as the deployment is finished, the pre-release is converted to a release. If you have subscribed to releases, you will get notified of pre-releases as well.
For high impact changes, we will post these in advance to the GitHub Changelog on our blog and on X.
Cadence
Tools and versions will typically be removed 6 months after they are deprecated or have reached end-of-life
We support (at maximum) 2 GA images and 1 beta image at a time. We begin the deprecation process of the oldest image label once the newest OS image label has been released to GA.
The images generally contain the latest versions of packages installed except for Ubuntu LTS where we mostly rely on the Canonical-provided repositories.
Popular tools can have several versions installed side-by-side with the following strategy:
| Tool name | Installation strategy |
|---|---|
| Docker images | not more than 3 latest LTS OS\tool versions. New images or new versions of current images are added using the standard tool request process |
| Java | all LTS versions |
| Node.js | 3 latest LTS versions |
| Go | 3 latest minor versions |
| Python Ruby | 5 most popular major.minor versions |
| PyPy | 3 most popular major.minor versions |
| .NET Core | 2 latest LTS versions and 1 latest version. For each feature version only latest patch is installed. Note for Ubuntu images see details. |
| GCC GNU Fortran Clang GNU C++ | 3 latest major versions |
| Android NDK | 1 latest non-LTS, 2 latest LTS versions |
| Xcode | - only one major version of Xcode will be supported per macOS version - all minor versions of the supported major version will be available - beta and RC versions will be provided "as-is" in the latest available macOS image only no matter of beta/GA status of the image - when a new patch version is released, the previous patch version will be replaced |
| Xcode Platforms | - only three major.minor versions of platform tools and simulator runtimes will be available for installed Xcode, including beta/RC versions |
We use third-party package managers to install software during the image generation process. The table below lists the package managers and the software installed.
[!NOTE] Third-party repositories are re-evaluated every year to identify if they are still useful and secure.
| Operating system | Package manager | Third-party repos and packages |
|---|---|---|
| Ubuntu | APT | docker Eclipse-Temurin (Adoptium) Erlang Firefox git-lfs git Google Cloud CLI Heroku HHvm MongoDB Mono MS Edge PostgreSQL R |
| pipx | ansible-core yamllint | |
| Windows | Chocolatey | No third-party repos installed |
| macOS | Homebrew | aws-cli v2 azure/bicep mongodb/brew |
| pipx | yamllint |
In general, these are the guidelines we follow when deciding what to pre-install on our images:
The availability of images for GitHub Actions and Azure DevOps is the same. However, deprecation policies may differ. See documentation for more details:
Usually, image deployment takes 2-3 days, and documentation in the main branch is only updated when deployment is finished. To find out which image version and what software versions are used in a specific build, see Set up job (GitHub Actions) or Initialize job (Azure DevOps) step log.
We do not plan to offer other Linux distributions. We recommend using Docker if you'd like to build using other distributions with the hosted runner images. Alternatively, you can leverage self-hosted runners and fully customize your VM image to your needs.
macOS source lives in this repository and is available for everyone. However, macOS image-generation CI doesn't support external contributions yet so we are not able to accept pull-requests for now.
We are in the process of preparing macOS CI to accept contributions. Until then, we appreciate your patience and ask you to continue to make tool requests by filing issues.
For some tools, we always install the latest at the time of the deployment; for others, we pin the tool to specific version(s). For more details please see the Preinstallation Policy
(top 30 of 322)
PowerShell
61.0%
Shell
22.0%
HCL
16.3%