/compat/github-actions/runner-image-labels
GitHub-hosted runner labels: ubuntu-latest, windows-latest, macos-latest
The commands on this page have not been executed by our verification runner yet.updated 2026-10-20
- tool
- GitHub Actions
- versions
- GitHub-hosted runners
- os
- linux, windows, macos
A runs-on label such as ubuntu-latest is an alias. GitHub moves it to a newer OS image after announcing the change in the runner-images repository, rolling it out over several weeks. ubuntu-latest points to Ubuntu 24.04 since the migration that finished in January 2025. Versioned labels (ubuntu-24.04, windows-2025, macos-15) stay on one OS until that image is retired.
Labels
| Label | Kind | Note |
|---|---|---|
| ubuntu-latest | alias | currently Ubuntu 24.04 |
| ubuntu-24.04, ubuntu-22.04 | versioned | x64 |
| ubuntu-24.04-arm, ubuntu-22.04-arm | versioned | Arm64 |
| windows-latest | alias | check the runner-images README for the current target |
| windows-2025, windows-2022 | versioned | x64 |
| macos-latest | alias | Apple silicon (arm64); check the README for the current version |
| macos-15, macos-14 | versioned | Apple silicon |
The README of actions/runner-images lists every available image, what -latest maps to today, and the tools preinstalled on each.
Which to use
- Pin a version (
ubuntu-24.04) for builds that must be reproducible, and upgrade on purpose. - Use
-latestfor jobs that should follow GitHub's default and can tolerate a new OS. - Print the image inside the job when debugging: the "Set up job" step shows the image name and version, and
cat /etc/os-releaseshows the OS.
Sources
Related pages
cheat sheets · github-actionsGitHub Actions cheat sheet: triggers, jobs, matrix, outputs and cachingGitHub Actions cheat sheet: triggers, jobs and needs, matrix builds, if conditions, step and job outputs, secrets and env, caching, artifacts, contexts.flags · github-actionsGitHub Actions shell: bash vs the default: -e and pipefailWithout shell:, Linux run steps use bash -e and miss failures inside pipelines. shell: bash runs bash --noprofile --norc -eo pipefail and catches them.compare · gitlab-ciGitHub Actions vs GitLab CI/CD: concepts and syntax side by sideGitHub Actions runs event-triggered workflows built from reusable actions; GitLab CI uses one .gitlab-ci.yml with stages, rules and includes. How they map.