The Ubuntu 24.04 Migration: Navigating the Shift in GitHub Actions' Default Runner

The ecosystem of continuous integration and continuous deployment (CI/CD) relies heavily on the stability and predictability of execution environments. For years, developers have utilized the ubuntu-latest label in GitHub Actions to access a rolling baseline of tools and libraries. However, the underlying operating system supporting this label is not static; it evolves in tandem with the release cycles of Ubuntu itself. A significant transition is currently underway, moving the default ubuntu-latest designation from Ubuntu 22.04 to Ubuntu 24.04. This migration represents more than a simple version bump; it involves a strategic reduction in pre-installed packages, a shift in default tool versions, and potential breaking changes for legacy workflows. Understanding the timeline, the technical implications, and the mitigation strategies for this change is critical for maintaining robust CI/CD pipelines.

The Evolution of the Ubuntu-Latest Label

GitHub Actions and Azure DevOps utilize the -latest suffix in runner labels—such as ubuntu-latest, windows-latest, and macos-latest—to point to the newest stable operating system version available. This mechanism allows developers to benefit from security updates and new features without manually updating their workflow files. However, the migration process is designed to be gradual, typically spanning one to two months. This phased approach provides customers with a buffer period to adapt their workflows to the new OS version before the ubuntu-latest label permanently resolves to the newer image.

Historically, this pattern has been consistent. In October 2022, GitHub began an eight-week rollout to transition ubuntu-latest from Ubuntu 20.04 to Ubuntu 22.04, the latter of which had become generally available (GA) on GitHub-hosted runners in August 2022. Developers who encountered issues during that transition were advised to file issues in the runner-images repository or pin their workflows to the older ubuntu-20.04 label. GitHub continued to support Ubuntu 20.04 for a period after the migration, allowing teams time to adjust.

Currently, Ubuntu 24.04 is ready to become the default version for the ubuntu-latest label. The migration began on December 5, 2024, and is scheduled to complete on January 17, 2025. During this window, workflows using the ubuntu-latest label may intermittently run on either Ubuntu 22.04 or Ubuntu 24.04. To determine which version a specific job is using, developers can inspect the "Runner Image" information in the "Set up job" step of their Actions logs. To avoid the unpredictability of this migration, users can specify a specific OS version in their YAML configuration, such as ubuntu-22.04 or ubuntu-24.04.

Rationale Behind Package Reduction

A defining characteristic of the Ubuntu 24.04 image is the significant reduction in pre-installed software. GitHub has removed a substantial number of packages from the image to maintain their Service Level Agreement (SLA) for free disk space. This decision is not arbitrary; it reflects a shift in philosophy toward leaner, more efficient runners. While Ubuntu 24.04 has been available in preview since May 2024 and became generally available in July 2024, the finalization of the package list involves cutting tools that are either obsolete, niche, or better managed through explicit installation in workflows.

The removal of specific packages impacts various development ecosystems. Notable omissions from the Ubuntu 24.04 image include:

  • Development tools such as the Heroku CLI, Leiningen, and the Mono/MSBuild/NuGet ecosystem
  • Infrastructure as Code tools like Terraform
  • The R language support suite
  • Subversion (SVN), reflecting the industry-wide decline in usage of this version control system
  • Cloud provider specific tools including Alibaba Cloud CLI, Netlify CLI, OpenShift CLI, and Vercel CLI
  • Rust ecosystem utilities such as Bindgen, Cbindgen, Cargo Audit, Clippy, and Cargo Outdated
  • Microsoft SQL Server Client Tools
  • The MarkdownPS PowerShell module
  • All cached Docker images, which previously reduced initial build times but increased base image size

This pruning forces developers to adopt a more explicit approach to dependency management. Rather than relying on the implicit presence of tools in the runner image, workflows must now declare and install necessary dependencies. This shift encourages practices such as version pinning and container-based workflows, reducing the "it works on my machine" paradox by ensuring that the CI environment mirrors the intended development environment precisely.

Impact on Legacy Systems and Specific Toolchains

The transition to Ubuntu 24.04 poses particular challenges for projects relying on older software versions or specific system configurations. The changes in default tool versions between Ubuntu 22.04 and Ubuntu 24.04 can break existing workflows. For instance, the version of Clang has changed significantly. In Ubuntu 22.04, the image included Clang versions 13 and 14. In Ubuntu 24.04, the pre-installed versions are different, requiring workflows to explicitly install specific Clang versions if compatibility with older codebases is required.

Legacy support remains a critical concern for many open-source projects. For example, testing older versions of Ansible—specifically Ansible 2.9, ansible-base 2.10, and ansible-core 2.11—often requires the use of Ubuntu 20.04. The ansible-test --docker functionality has been known to break on newer Ubuntu images due to changes in system dependencies, such as the init system and SSH configurations. Similarly, testing applications against Python 3.6, which is no longer supported by modern Ubuntu releases, often necessitates the use of ubuntu-20.04 because the setup-python action may fail on newer runners when attempting to configure such ancient interpreters.

Ubuntu 20.04 reached the end of its standard support in April 2025, though paid professional support is available until April 2030. As GitHub eventually deprecates support for older images—maintaining only the latest two versions of an OS—projects requiring these legacy environments may need to migrate to self-hosted runners. Self-hosted runners allow teams to maintain Ubuntu 20.04 instances indefinitely, bypassing the limitations of GitHub-hosted runners. For teams unable to migrate away from legacy software, documenting external service dependencies and maintaining self-hosted infrastructure becomes a necessary operational overhead.

Best Practices for Migration and Maintenance

To navigate the transition to Ubuntu 24.04 effectively, developers must audit their workflows and adopt proactive maintenance strategies. The most immediate step is to pin workflows to specific OS versions to ensure stability. Using ubuntu-22.04 provides a temporary refuge for workflows that break on Ubuntu 24.04, allowing teams time to update their dependency installation scripts.

Long-term resilience involves embracing explicit dependency management. Instead of relying on pre-installed tools, workflows should use actions such as setup-dotnet, setup-python, or setup-node to install specific versions of required software. This approach ensures that workflows are portable and resilient to changes in the underlying runner image. Additionally, container-based workflows offer a robust solution for complex environments. By defining all dependencies within a Dockerfile, developers can create a self-contained environment that is independent of the runner's base OS, mitigating the risk of breaking changes due to OS updates.

Security is also a key consideration. The new self-hosted runner requirements emphasize better isolation between runners and external services, clearer audit trails, and reduced risk of unauthorized access. These changes align with broader industry trends toward zero-trust security models. Developers should update their network security policies, configure webhook rate limit monitoring, and test runners with restricted permissions to ensure compliance with modern security standards.

Looking Ahead: macOS and Future Updates

While the focus remains on the Ubuntu migration, GitHub is also advancing its support for other operating systems. macOS 15 is now available in public beta for GitHub Actions. Developers can opt into this beta by specifying macos-15, macos-15-xlarge, or macos-15-large in their workflow files. Like the Ubuntu transition, the macOS 15 runner image contains different tools and tool versions compared to macOS 14, requiring careful testing before adoption.

The ubuntu-latest migration to Ubuntu 24.04 is part of a broader strategy to keep GitHub Actions runners modern, secure, and efficient. By reducing the size of the base image and removing obsolete tools, GitHub is pushing the developer community toward more explicit, maintainable, and secure CI/CD practices. While the immediate impact may require significant effort to update workflows, the long-term benefits include improved reliability, better security posture, and clearer dependency management.

Conclusion

The migration of ubuntu-latest to Ubuntu 24.04 is a pivotal moment for the GitHub Actions ecosystem. It marks a shift from implicit, bloated runner images to lean, explicit, and secure environments. Developers must recognize that the ubuntu-latest label is a moving target and plan accordingly. By pinning versions, auditing dependencies, and adopting container-based workflows, teams can ensure their CI/CD pipelines remain robust and resilient. The deprecation of legacy tools and the reduction in pre-installed packages are not merely inconveniences but opportunities to refine development practices and improve the overall quality of software delivery. As GitHub continues to update its runner images, including the introduction of macOS 15, the importance of proactive workflow maintenance cannot be overstated. The era of "black box" CI/CD runners is ending; the era of explicit, controlled, and secure execution environments has begun.

Sources

  1. Ubuntu-latest workflows will use Ubuntu-24.04 image
  2. GitHub Actions Ubuntu Latest Workflows Will Use Ubuntu 22.04
  3. GitHub Actions Runner Images Repository
  4. Actions New Images and Ubuntu Latest Changes
  5. Critical Changes Coming to GitHub Actions Ubuntu 24 Migration Guide
  6. GitHub Actions Still Using Ubuntu 20.04

Related Posts