Start Building for Free
CircleCI.comAcademyBlogCommunitySupport

Migrating from Ubuntu 16.04 to Ubuntu 20.04

1 week ago1 min read
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

Suggest an edit to this page

Make a contribution
Learn how to contribute