top of page
Writer's pictureWix Engineering

BazelCon 2019: Lessons-learned from Migrating our Build System to Bazel

Updated: Jun 18, 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.


This year 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).


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

 

Want to hear more firsthand from Ittai Zeidman and Or Shachar? Listen to their interview with Natan Silnitsky on our Wix Engineering Podcast:

 


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:



 

For more engineering updates and insights:

bottom of page