Docs
circleci.com
Start Building for Free

Migrating from Ubuntu 16.04 to Ubuntu 20.04

4 months ago1 min read
Cloud
Server v3.x
Server v2.x
On This Page

Switching to a supported image

Swapping out the deprecated image for a supported one in the CircleCI config is straightforward. Additional work to get your pipelines to run with the newer image will depend on if the changes below apply to your project. Here’s an example config using an Ubuntu 16.04 image vs one using a 20.04 image:

Supported images (and tags) can be found in the Developer Hub.

Note: This guide will be updated over time to include additional information and tips as CircleCI and customers share their experiences with this migration.

Changes

There are many changes between Ubuntu 16.04 and 20.04 that you should be aware of before migrating. Many are changes that Canonical has made (the company behind Ubuntu), but also changes that CircleCI has made to the software that we pre-install. Let’s go through each of these changes separately.

Changes to Ubuntu

  • kernel - The Linux kernel was bumped from v4.4 to v5.11.
  • Python - Python v2 is no longer installed by default from Ubuntu. CircleCI still installs it, and versions can be managed via Pyenv.
  • OpenSSH - OpenSSH was updated to v8.2. This is a new version that should not be affected by GitHub’s deprecation.
    • Ubuntu now refuses to use RSA keys smaller than 1024 bits.
  • GNU Toolchain
    • glibc updated to v2.31
    • binutils updated to v2.26
    • GCC updated to v9,3
  • Apt updated to v1.2
  • Nginx updated to v1.18
  • nginx-core no longer ships with the legacy geoip module enabled by default.
  • Apache has been built with TLSv1.3 support.
  • Apache was updated to version 2.4.29. Additionally, HTTP/2 support is now enabled.
  • LXD updated to v3.0
  • PHP updated to v7.4
  • Perl 5.30
  • MySQL updated to v5.7
  • Snap & Snapcraft - Support for running and build snap packages.
  • Java - OpenJDK v11 is now the default; however, CircleCI pre-installs more versions.
  • OpenSSL upgraded from v1.1.0 to v1.1.1 enabling TLS v1.3
  • netplan supports IPv6 privacy extensions.
  • netplan can bring up devices without an IP for anonymous bridges.
  • default DNS resolver is systemd-resolved.
  • Bind 9.16
  • SystemD takes over from SysV.
  • gpg binary is provided by gnupg2.
  • Chrony v3.5 replaces ntpd.
  • Wireguard VPN support
  • rustc 1.41
  • HAProxy 2.0
  • PostgreSQL 12

CircleCI Software Changes

SoftwareUbuntu 16.04Ubuntu 20.04 (January 2022 Q1)
AWS CLI1.19.602.4.6
Google Chrome90.0.4430.9396.0.4664.110
Docker19.03.1520.10.11
Docker Compose1.29.11.29.2
Firefox88.095.0.1
GCP CLI337.0.0365.0.0
Go1.16.31.17.3
Gradle6.57.3.2
Heroku7.53.07.59.2
jq1.51.6
Leiningen2.9.32.9.8
Maven3.6.33.8.4
Node.js12.22.116.13.0
npmn/a8.3.0
OpenJDK1.811.0.13
Python22.7.183.9.4
Python3n/a3.9.7
Ruby3.0.13.0.2
SBT1.3.91.5.8
yqn/a4.13.5

Help make this document better

This guide, as well as the rest of our docs, are open source and available on GitHub. We welcome your contributions.

Need support?

Our support engineers are available to help with service issues, billing, or account related questions, and can help troubleshoot build configurations. Contact our support engineers by opening a ticket.

You can also visit our support site to find support articles, community forums, and training resources.