
For more information, see this GitHub blog post. The macos-latest and macos-latest-xl workflow labels currently uses the macOS 12 runner image. Macos-latest, macos-12, macos-latest-xl or macos-12-xl The ubuntu-latest label currently uses the Ubuntu 22.04 runner image. The windows-latest label currently uses the Windows Server 2022 runner image.
Hardware specification for macOS virtual machines: Hardware specification for Windows and Linux virtual machines: For more information, see " Using larger runners."
Note: GitHub also offers larger runners, which are available in larger configurations.
The job named Run-PSScriptAnalyzer-on-Windows is executed on a Windows VM, because the job's runs-on: specifies windows-latest. The job named Run-npm-on-Ubuntu is executed on a Linux VM, because the job's runs-on: specifies ubuntu-latest. When this workflow is triggered, GitHub provisions a new virtual machine for each job. The following example workflow has two jobs, named Run-npm-on-Ubuntu and Run-PSScriptAnalyzer-on-Windows. The following diagram demonstrates how two jobs in a workflow are executed on two different GitHub-hosted runners. When the job has finished, the VM is automatically decommissioned. You can run workflows directly on the VM or in a Docker container. All steps in the job execute on the VM, allowing the steps in that job to share information using the runner's filesystem. When the job begins, GitHub automatically provisions a new VM for that job. For the full list of runner types, see " About GitHub-hosted runners." To use a GitHub-hosted runner, create a job and use runs-on to specify the type of runner that will process the job, such as ubuntu-latest, windows-latest, or macos-latest. When you use a GitHub-hosted runner, machine maintenance and upgrades are taken care of for you. Each GitHub-hosted runner is a new virtual machine (VM) hosted by GitHub with the runner application and other tools preinstalled, and is available with Ubuntu Linux, Windows, or macOS operating systems. GitHub provides runners that you can use to run your jobs, or you can host your own runners. For example, a runner can clone your repository locally, install testing software, and then run commands that evaluate your code. Runners are the machines that execute jobs in a GitHub Actions workflow.