Major Linux updates in March 2024: Test, adapt, and be prepared
It’s one of our top priorities to bring efficient, secure, and up-to-date stacks frequently to users building on Bitrise. In March 2024 we will release a major update to our Linux stacks that will bring Ubuntu 22.04 Jammy Jellyfish to Bitrise, in accordance with our Stack Update Policy.
By default, Android builds are running on Linux-based stacks. The very foundation of these stacks is the latest Ubuntu LTS version. The current stack available at Bitrise is based on Ubuntu 20.04 Focal Fossa which was released on March 23, 2023 and has an End of Standard Support date in April, 2025.
🔗 Learn more about Ubuntu versions here.
The new Linux stack is still a work in progress, but you already have the option to try it out and test your builds. In March 2024 we will release this new Linux stack as a major update that will bring Ubuntu 22.04 Jammy Jellyfish to Bitrise. This is the latest LTS version of Ubuntu with an End of Standard Support date in June 2027.Along with the new Ubuntu version, some of the tools preinstalled on the stacks will be updated accordingly which requires your attention and preparation to ensure a seamless transition.
- January 2024: First edge version of the new Ubuntu 22.04 Linux stack released to Bitrise.
- February 2024: Frequent edge stack releases as we are progressing.
- March 2024: The new Ubuntu 22.04 stack is released to Bitrise, becoming the default Linux stack for newly created apps
- August, 2024: Ubuntu 20.04 is marked as deprecated.
- October 2024: All apps building on Ubuntu 20.04 will be migrated to the new Ubuntu 22.04 stack.
- April 2025: Ubuntu 20.04 will be completely removed from Bitrise.
As we journey into the next era with Ubuntu 22.04, it’s essential to test, adapt, and be prepared. Remember, these changes aim to enhance your experience, streamline efficiency, and boost security.
🔗 Find out more about the changes in Ubuntu 22.04
There are some changes that we couldn’t make to the current Ubuntu stack without breaking existing user workflows (such as switching to JDK 17), so we decided to make some changes to this new stack instead.
As always, the stack report is available here, listing every install tool and tool version.
JDK 17 by default
By popular demand, JDK 17 is the new default version, matching the requirements of recent Android Gradle Plugin versions.
Other popular LTS versions are still installed (JDK 8, 11, 21), and the Set Java version step can be used to select another default at runtime like before.
Android SDK CLI tools
The following CLI tools are now available in `$PATH: emulator, zipalign, aapt2, apksigner`.
Preinstalled Android NDK upgrade
The preinstalled NDK has been upgraded to the current LTS version `26.1.10909125`.
Preinstalled emulator system images and platform versions
There are some emulator system images and platform versions preinstalled to reduce your build times. As a new Android OS version is released, the matching system image and platform package is added to the stack. From now on, expect these packages to be available preinstalled:
- Last 3 OS versions for emulator system images (Google API variant)
- Last 3 platform packages
`$ANDROID_NDK_HOME` is no longer defined.
This env var has been deprecated for years and modern Android Gradle Plugin versions ignore its value: Configure NDK Path.
Gradle, Maven, Ant are no longer installed
These build tools are not installed system-wide anymore. We recommend using Gradle wrapper or Maven wrapper and pinning an exact version of your build tool.
Kotlin CLI 2.0
The preinstalled Kotlin CLI is now version 2.0 Beta 3 and we’ll update it to the final 2.0 release once it’s available.
Node 20 as default, Node 16 is no longer installed.
The previous default Node version, Node 16 has reached its end-of-life. This new Bitrise stack version makes Node 20 (current LTS version) the default, and Node 16 is no longer preinstalled.
You can learn more about selecting tool versions and installing additional ones here.
Active Node version is automatically selected based on `.node-version`or `.nvmrc` files.
If the current working directory (your repo root typically) contains one of these files, the build environment automatically tries to activate the declared version in such a file.
Make sure that if your repo declares a Node version this way, the declared version is preinstalled (or install it at runtime). You can learn more about selecting tool versions and installing additional ones here.
Corepack
Yarn and PNPM are installed with corepack. These package managers are installed for each preinstalled Node version.
Possible breaking change: corepack prevents running `npm install -g yarn`. If you want to use a different version of Yarn or PNPM, use the `packageManager` field in your `package.json` to declare the desired version.
Preinstalled Flutter upgrade
The preinstalled Flutter SDK has been upgraded from `3.3.10` to `3.16.1`.
It is also now managed with ASDF, so you can install additional versions if needed.
Ruby 3.3
Ruby 3.3 is now the default active version, while Ruby 3.2 and 3.1 are also installed.
AWS CLI v2
AWS CLI version 2 is the preinstalled version instead of version 1.
Python 3
Python 2 is no longer preinstalled, Python 3.12 is the new preinstalled version.
Docker Compose
Docker Compose is installed as a Docker plugin instead of a standalone binary.
See this Docker article for changes and the migration guide.
Some default tool versions are aliases now
Tools that are managed with ASDF (thus multiple versions can be installed side-by-side) have special alias versions now. For example, even though `nodejs 20.6.1` is installed on the stack, it’s also available as `node 20` and `node 20.6`. In fact, the global default version is the `node 20` alias.
If you previously declared an exact number in a `.tool-versions` file, we recommend pinning one of the available aliases as the exact versions might change as security updates are released to the tools.
Affected tools and runtimes:
- Go
- Ruby
- Node.js
- Python
- Flutter
Go install
Go is now managed with ASDF.
Possible breaking change: If you install a Go binary to `$PATH` in your workflow via `go install` you’ll need to run `asdf reshim golang` before calling the binary.
No longer preinstalled
The following CLI binaries are no longer preinstalled:
- `cmake`
- `clang`
- ImageMagick `convert`.
You can still install them from the Debian repositories at runtime.
As we are getting closer to the release date in March, we’ll update our blog, public Slack and of course the Stacks page.
Find some tips on staying up to date here.
If you have any questions, don’t hesitate reaching out to us on the usual channels. If you have any product feedback or experienced issues with the new stack, please report it to us on this GitHub ticket. Looking forward to building amazing mobile apps together with our new Linux stack!
🚀 Happy Building, The Bitrise Team