Migrating from Ubuntu 16.04 to Ubuntu 20.04
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
Software | Ubuntu 16.04 | Ubuntu 20.04 (January 2022 Q1) |
---|---|---|
AWS CLI | 1.19.60 | 2.4.6 |
Google Chrome | 90.0.4430.93 | 96.0.4664.110 |
Docker | 19.03.15 | 20.10.11 |
Docker Compose | 1.29.1 | 1.29.2 |
Firefox | 88.0 | 95.0.1 |
GCP CLI | 337.0.0 | 365.0.0 |
Go | 1.16.3 | 1.17.3 |
Gradle | 6.5 | 7.3.2 |
Heroku | 7.53.0 | 7.59.2 |
jq | 1.5 | 1.6 |
Leiningen | 2.9.3 | 2.9.8 |
Maven | 3.6.3 | 3.8.4 |
Node.js | 12.22.1 | 16.13.0 |
npm | n/a | 8.3.0 |
OpenJDK | 1.8 | 11.0.13 |
Python2 | 2.7.18 | 3.9.4 |
Python3 | n/a | 3.9.7 |
Ruby | 3.0.1 | 3.0.2 |
SBT | 1.3.9 | 1.5.8 |
yq | n/a | 4.13.5 |