How to: Build Chromium with Reclient

It is official: Goma is no longer supported by Google, and all Chromium and AOSP builds must use Reclient for remote execution and caching.

Reclient is a build system plugin providing remote execution and remote caching capabilities to existing build systems that do not natively support them -- such as Ninja, the build system used to build Chromium. See my last post, Goma is Gone — Put Everything Into Reclient! for an overview of Reclient architecture and some insights into the migration.

In this post we delve into the technical details of how to build Chromium with Reclient on a remote cluster with Linux workers.

Bazel scales more than just builds

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.

EngFlow Company Newsletter - Q4 2023

To our EngFlow family — wishing you a peaceful and happy holiday. We look forward to working together in 2024!

Xkcd

courtesy of xkcd.com

From our early days we have set our company’s priorities in the following order: Happy Team, Happy Customers, More Happy Customers. We’d like to provide you with a few updates in that construct.

A Winter Visit

T'was the day before EngFlow went quiet, when all through the repository,
Not a PR was stirring, not even a new blog story.

The OnCall schedule was overridden for the year's tail
but all hoped that the clusters would stay hale.

The company was all snug in their beds,
While visions of ARR danced in their heads.

And I had settled down to quiet end of OnDuty,
Closing issues with comments a bit snooty.

When from PagerDuty arose such a clatter,
I sprang to Slack to see what was the matter!

I tore open #production,
To see what was the malfunction!

But there was nothing there,
Save an unhealthy pool alarm's blare.

I soothed it with a PR,
And rolled the cluster with a gentle hardy-har.

Then, while spilling her eggnog,
Our CEO said "let's get this out now as a Holiday Blog!"

(With apologies to Clement Clarke Moore)

Bazel 7 is here - and Bazel Invocation Analyzer is ready for it!

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.

Bazel Community Day – Munich

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.

Photo from Bazel Community Day, Munich

Photo from Bazel Community Day, Munich

Secure Builds with Credential Helpers

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.

EngFlow Company Newsletter - Q3 2023

EngFlow Belfast Meetup

A lot has happened since our last update, so we’d like to provide you with recent and relevant insights. We welcome questions and feedback, which we’ll collect via a brief survey below.

From our early days, we have set our company’s priorities in the following order: Happy Team, Happy Customers, More Happy Customers. We’d like to provide you with a few updates in that construct.

Coding in the Fast Lane with ibazel

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?

Example of a minimal frontend dev's workstation

Example of a minimal frontend dev's workstation