Combining The Linux Infrastructures

We’re excited to announce a project that we’ve been working on for quite some time: Over the next three months, we will be combining our two Linux infrastructures into a single platform.

This is a big user experience improvement, making it easier to setup and maintain projects on Travis CI. In particular, it will simplify setup for folks new to Travis CI, who have to make a decision based on the finer points of containers vs. virtual machines. We would like our platform to be as accessible as possible to all users, and see a combined Linux infrastructure as an important step in that direction.

Going forward, we will slowly transition the container-based environment out, in favor of a build environment that is entirely virtual machine-based. Folks using container-based infrastructures will be the only ones affected, and this transition will roll out slowly, depending on whether you specify sudo: false in your .travis.yml. Repositories created before January 2015 are also already routed to the virtual machine-based infrastructure (if you don’t specify sudo: false). If you’re currently using the virtual machine-based Linux infrastructure (or run your own Travis CI Enterprise installation), this change will not affect your projects.

We know the container-based infrastructure has quite a few fans - in fact, it runs about 45% of all Travis CI builds. However, we also know that more and more folks are building and deploying Docker images, and using Docker within a container-based build is not a great experience. This is especially true since the privileges within that container are significantly reduced to maintain security. In addition, we’ve also noticed as folks move toward more automation on top of CI builds, it takes too many steps to change settings to switch infrastructures. What should be an easy step in adopting a tool, requires more config down the road than is necessary. We’re pretty excited to offer a better user experience with the single infrastructure.

Also, this change will reduce duplicate maintenance and monitoring work our build infrastructure team has to do - meaning these fabulous humans will have more time to work on other projects to improve your experience of Travis CI.

Migration Timeline

Since combining infrastructures impacts lots of folks, we’re making changes incrementally. The process will happen in phases:

Changes to the Default Behavior (Starting Now)

Starting this week, we have begun the process to move repositories on travis-ci.org to using the virtual machine-based infrastructure. If you do not specify sudo: false in your .travis.yml, your next build will run on the virtual machine-based infrastructure.

The process for travis-ci.com will be a bit more measured. Starting in two weeks, we’ll begin randomly sampling a percentage of these repositories to redirect to the combined infrastructure, until everyone has moved over.

Temporary Rollback

While we expect fairly limited impact to most builds, folks that depend on the container-based IPs should expect to see these IPs changing, as projects move over to the new infrastructure. (You can check what new IPs to expect in the docs) In addition, if you use a specific build environment group and do not specify sudo: required, it’s possible you’ll see slight variations in your build environment as projects are migrating.

You can rollback any time during this phase by adding sudo: false to your to .travis.yml. We encourage you to make any updates you need soon, though, as sudo: false will be fully phased out shortly.

Changing Behavior for Explicit sudo:false (November)

Starting in the second week of November (we’ll post another blog post), we will start to migrate repositories that use sudo: false to the virtual machine-based infrastructure. Open source repositories will be rerouted first, with closed-source to follow. We’ll keep you posted via this blog and the changelog and twitter - have a look out for updates!

Questions and Comments Welcome!

If you have feedback or anything you’d like to ask, give us a shout on the community forum, travis-ci.community or email us at support@travis-ci.com. We’re looking forward to helping out.

Thank yous!

Last of all, we wanted to give a big shout-out to our community - you all are amazing, and we appreciate your suggestions, patience, and comments! Also, we owe a huge thanks to our friends at GCE who are incredibly helpful in this project. Finally, major props to the Build Infrastructure and Support & Success teams who are making this all happen! 💚