Discover the highlights from the seventh Bazel Community Day and happy hour in Amsterdam. Jointly organized by EngFlow and Booking.com, hosted at the stunning new Amsterdam headquarters of Booking.com on March 25, 2024. You can see Booking.com's recap here.
When you search the internet for details about Bazel, you’ll likely come across something like this:
Bazel is a build system. It’s used to build and test software, converting source code into artifacts, such as executable programs.
Bazel’s headline, “{Fast, Correct} - Choose two,” emphasizes its focus on scalability and hermeticity. It’s language agnostic, allowing you to use Bazel to build projects written in a variety of different programming languages.
If this seems confusing or overwhelming at first, don’t worry – we’ve cooked up a different approach that could help. We’ve concocted this article using a slightly rare (yes, we went there!) cooking metaphor.
At EngFlow, we've been dedicated to improving the speed, efficiency, and productivity of development processes for almost half a decade. As the market has evolved and FinOps gains more traction, we've expanded our focus beyond accelerating development to include optimizing costs and fostering sustainability in software engineering.
Let's discover how EngFlow can effectively help you achieve your goals by reducing infrastructure expenses and maximizing resource utilization.
Bazel creates a structured layer between the details of building and testing for individual languages and the users, both human and machine, that perform build operations. This abstraction simplifies workflows and is the foundation for powerful build-adjacent systems not possible with other build tools. Scalable Bazel builds underpin a scalable organization and development culture.
On December 11th, 2023, Bazel 7.0 LTS was released, which includes multiple
changes to improve build performance. More details below!
Bazel Invocation Analyzer (BIA) is an open-source tool by EngFlow that
analyses the JSON trace profiles generated by Bazel and provides suggestions on
how to improve the build performance. You can download the source and run the
CLI or use the web UI available at https://analyzer.engflow.com.
BIA has been updated to support the internal changes introduced with the launch
of Bazel 7.0 LTS, so you can continue to speed up your builds with the help of
BIA. It also features new types of suggestions to help you fine-tune your builds
irrespective of whether you are using Bazel 7 already or not.
On October 23 2023, the day before the first European BazelCon, EngFlow and Tweag organized the sixth Bazel Community Day at the Salesforce office, capped off with a happy hour sponsored by Gradle.
Secure and reproducible builds are something we'd all like, and something many
of us work on regularly.
One area that is frequently overlooked in the topic is how to securely provide
credentials for external services used during a build. Systems often fall back
to insecure methods like passing them on the command-line or storing them in
plaintext on disk.
In this post, we will provide an overview of common authentication mechanisms
and why they should not be considered secure, and then introduce Credential
Helpers and how they do provide secure builds.
The alternating sound of ctrl+s and ctrl+r followed by a deep sigh fill my days working on EngFlow's Build and Test UI. I mean, centering divs is already frustrating, but having to glance back and forth from one screen to another while refreshing the browser adds insult to injury. It doesn't help that being your average frontend dev I usually work with no less than a few thousand monitors. How else would I be able to look at the application, the code, and the ever present Flexbox layout cheatsheet at the same time?
Configuring Bazel to authenticate against external services like
Remote Caching, Remote Execution, a Build Event Service, or
external repositories like http_archive or http_file has historically
been challenging for many for users. However as of Bazel 5.4.0, Credential
Helpers provide a simple, extensible, and secure way to inject credentials
into a build.
One of Bazel’s key features is that tests are treated as the same as other build actions. Bazel provides a uniform command line interface for running tests no matter the underlying language or test framework. While there’s much to be said about writing test rules and frameworks that mesh well with Bazel, this post will focus on the experience of running tests as a developer with bazel test. Running tests is a core software engineering workflow, so it’s not surprising Bazel has many useful features for iterating locally with a test.