Build Environment Overview
What This Guide Covers #
This guide provides an overview on the different environments in which Travis CI can run your builds, and why you might want to pick one over another.
Virtualization environments #
Each build runs in one of the following virtual environments.
A sudo enabled, full virtual machine per build, that runs Linux, one of:
A macOS environment for Objective-C and other macOS specific projects
A Windows environment running Windows Server, version 1803.
Virtualisation Environment vs Operating System #
The following table summarizes the differences across virtual environments and operating systems:
|Ubuntu Linux (Bionic, Xenial , Trusty, Precise)||macOS||Windows||Ubuntu Linux / LXD container with (Bionic), Xenial|
|Status||Current||Current||Early release||Early release|
|Infrastructure||Virtual machine on GCE||Virtual machine||Virtual machine on GCE||ARM: LXD container on Packet
IBM Power: LXD container on IBM Cloud
IBM Z: LXD container on IBM Cloud
|CPU architecture||amd64||amd64||amd64||arm64 (armv8)
ppc64le (IBM Power)
s390x (IBM Z)
|Approx boot time||20-50s||60-90s||60-120s||<10s|
|Operating system||Ubuntu Linux||macOS||Windows Server 2016||Ubuntu Linux|
|Memory||7.5 GB||4 GB||8 GB||~4 GB|
|IPv4 network||IPv4 is available||IPv4 is available||IPv4 is available||IPv4 is available|
|IPv6 network||IPv6 is not available||IPv6 is not available||IPv6 is not available||IPv6 is available|
|Available disk space||approx 18GB||approx 41GB||approx 19 GB||approx 18GB (Arm, IBM Power, IBM Z)|
Available disk space is approximate and depends on the base image and language selection of your project. The best way to find out what is available on your specific image is to run
df -has part of your build script.
What infrastructure is my environment running on? #
Usually, knowing the virtualization environment characteristics from the table above is sufficient.
But, if you do need more detail, you have one of these two questions:
- you want to see what infrastructure a finished build ran on.
- you want to determine what infrastructure a particular
.travis.ymlconfiguration will run on.
For a finished build #
To see what infrastructure a finished build ran on, look at the hostname at the top of the build log:
if it contains:
gce→ the build ran in a virtual machine on Google Compute Engine.
wjb→ the build ran on macOS.
1803-containers→ the build ran on Windows.
lxd-arm64→ the build ran within an LXD container on Arm64-based infrastructure (currently delivered by Packet)
lxd-ppc64le→ the build ran within an LXD container on Power-based infrastructure (currently delivered by IBM)
lxd-s390x→ the build ran within an LXD container on Z-based infrastructure (currently delivered by IBM)
For a particular .travis.yml configuration #
Our default infrastructure is an Ubuntu Linux (
os: linux) virtual machine running on AMD64 architecture (
arch: amd64), on Google Compute Engine. You can specify which version of Ubuntu using the
os: osx, setting a version of Xcode using
osx_image:, or using a macOS specific language such as
language: objective-croutes your build to macOS infrastructure.
os: windowsroutes your build to Windows infrastructure.
arch: arm64routes your build to Arm-based LXD containers. You can specify which version of Ubuntu using the
arch: ppc64leroutes your build to IBM Power-based LXD containers. You can specify which version of Ubuntu using the
arch: s390xroutes your build to IBM Z-based LXD containers. You can specify which version of Ubuntu using the
Deprecated Virtualization Environments #
Historically, Travis CI has provided the following virtualization environments.
- Trusty Container-based environment: was available between July, 2017 and December, 2018.
- Precise Container-based environment: was available between December, 2014 and September, 2017.
- Legacy Linux environment: was available until December, 2015.
If you’re trying to use
sudo: false or
dist: precise keys in your
travis.yml, we recommend you remove them and switch to our current Xenial Linux infrastructure.