Join us at JAMstack Conf San Francisco, October 16-18. Register today

By Bret Comnes & Jessica Parsons in News & Announcements

A more flexible build architecture with updated Linux

One of our primary goals at Netlify is to make deployments something you don’t have to worry about. With that in mind, we designed our process for creating a site from a connected Git repository so that it “just works” with very little configuration. We get daily feedback about how much people love this!

Under the hood, this workflow has relied on a single build image with a variety of common languages and build tools pre-installed. We’ve made non-breaking changes to it over the years, adding support for new features without changing behavior on legacy sites. It has served us well, but the time has come where we need to make a change.

Moving from “Trusty” to “Xenial”

Our original build image was made to use Ubuntu Linux 14.04 LTS (codenamed “Trusty Tahr”). This is a stable release with long term support, but it will be reaching its end of life in April 2019. Also, some features included in newer versions of the popular site generator Hugo require a newer version of Linux.

We knew we wanted to upgrade to Ubuntu Linux 16.04 LTS (codenamed “Xenial Xerus”), but unlike adding a language version or a new build tool, changing the operating system version on our build image is a potentially breaking change. We needed a way to test changes, and to roll them out selectively.

The answer came in modifying our infrastructure to accommodate multiple build images, with the ability to assign a particular build image to a site. This required collaboration from members of our platform and API teams, working together over a period of months, but it means that we can now test new changes an iterate more quickly than before.

It also means we can roll out changes for all new sites, without affecting builds on existing sites. And that’s exactly what we’re doing today.

New site? New build image

Starting today, all new sites on Netlify use the “Xenial” build image by default. This means your new sites are on a modern operating system version with long term support. It also means you can start using Hugo extended and taking advantage of features like Hugo pipes!

Meanwhile, existing sites will continue running on the same “Trusty” image they always have. But what if you want to upgrade, too? We’ve got a button for that.

Build image selection settings UI at Settings > Build & deploy > Continuous deployment

You can change your build image from your site’s Build & deploy settings page at any time. When you run a new deploy, the image version will display in the deploy logs:

The third line of a deploy log reads, 'build-image tag: xenial'

If you run into build issues, or you change your mind, you can go back to the same settings panel and switch back. You can find our more in the build image selection docs.

More changes to come

Having a more flexible build infrastructure paves the way for lots more improvements and innovations down the line. We may add experimental or staging images for customers to enable in the UI, or we might experiment with offering images that serve more niche use cases. If you have ideas, mention them in the comments here, or open an issue in our open build-image repository!

We look forward to hearing from you, and to sharing further improvements as we keep iterating!