Lessons-learned from Migrating our Build System to Bazel

Wix Engineering
Wix Engineering
Published in
3 min readJun 23, 2020
BazelCon 2019

The Bazel User Conference is an annual gathering of the community surrounding the Bazel build system. With great tech talks, demos, and lightning talks presented by members of the Bazel community.

In 2019 we had Ittai Zeidman (@ittaiz), Or Shachar (@orchoock) and Liron Tal going up on stage to share with the Bazel community, how we’ve made and are making local development with #Bazel great, how we used Bazel to build a parallel and asynchronous artifact publishing pipeline, and 6 lessons we learned from migrating Wix build system to Bazel (with no downtime).

Left to right: Liron Tal, Or Shachar and Ittai Zeidman

Using Bazel to build a parallel and asynchronous artifact publishing pipeline, Liron Tal

Moving to Bazel has reduced the average duration of our CI builds to 7 minutes. This caused our artifact publishing pipeline to become the longest part of our build process, taking about 10 minutes.

In this lightning talk, Liron will describe the key features of the new asynchronous publishing pipeline we’re building:

  1. Our system handles parallel builds on master while managing to keep a correct order of publishing, and also allows for history builds to run without publishing their output.
  2. Our system is asynchronous, which means that the publishing isn’t blocking the build. We get published artifacts while the build is running, which means that the publishing can run in parallel to end-to-end testing.

Watch:

Make local development (with Bazel) great again!, Ittai Zeidman

Are you a Bazel user who doesn’t enjoy the current workflows? Do you sometimes think about simpler times before using Bazel where you didn’t need to maintain many build files by hand, run IntelliJ sync frequently, mitigate red-code in IntelliJ and other local time-wasters? Are you interested in finding tools to boost local development velocity while using Bazel?

If you answered “yes” to any of the above you’ll find great interest in this talk where Ittai Zeidman will share some of the challenges we had moving ~10M lines of JVM codebase to Bazel, the tools we built to solve these challenges (and are planning to open-source next year), what developer d2d coding looks like at Wix today, and what are our plans for the future:

How we gradually migrated Wix Build System to Bazel with no downtime, Or Shachar

Two years ago, we were given a big challenge — Transform Wix Build System, then based on Maven and Teamcity, to a new system that will support our exponentially growing scale. Naturally, we chose Bazel.

But, how could we move to a system so different in so many ways than the existing one? Furthermore, we were required not to break the current build system, as we migrate to the new one.

Fast forward to today: Wix backend CI system is fully migrated to Bazel! The system builds in a fracture of the time — even with our largest codebases. In this talk, Or Shachar will describe how we achieved this, why it took us so long, what tools we had to build on the way (and what we already have, and will, open source!), and share the principles that helped us. Watch:

This post was originally published on Wix Engineering blog

For more engineering updates and insights:

--

--

Wix Engineering
Wix Engineering

Wix Engineering. We develop innovative cloud-based web applications that influence our Wix.com 150M+ users worldwide