The Red X that Says What it Saw

A failing CI check knows exactly what went wrong. It was there. It watched the exception get thrown, caught the stack trace, wrote the whole thing down. And then, by long tradition, it tells you almost none of it: a red X, a job name, and an invitation to go read the logs yourself.

Our CI bot has commented on pull requests in gradle/gradle for years: triggering builds on request, shepherding the merge queue, answering commands. In mid-July we gave it one more job. When a check goes red, it reads the failures out of Develocity, groups them, and posts a short summary on the pull request, so the red X finally has to say what it saw.

...

❯ Read more

How AWS Powers Gradle's Open Source Build Tool

The Gradle Build Tool runs a lot of the world’s software. Millions of developers use it every day, and almost every Android app on your phone was built with it. So somebody, somewhere, is kicking off a Gradle build right now. And the next one. And a thousand more in the next minute.

For all of them, it has to be fast, and it has to be there.

That isn’t free. Behind the open source project sits a plugin portal serving hundreds of millions of downloads a month, a CI fleet running millions of tests, a performance lab watching for regressions, and the security tooling that guards a supply chain a lot of the industry depends on. All of it runs on...

❯ Read more

The (Petty) Reason We Didn't End Up Using jj

Jujutsu (jj) has been picking up steam as a Git-compatible version control system.

JJ Github intro

When used with its Git backend, jj stores commits and files in Git and works with existing Git repositories, but it does away with the staging area so your working copy is represented as a real commit that updates as you go. Rewriting history is cheap and safe: edit or reorder a commit and jj rebases its descendants for you; conflicts can be recorded instead of halting the operation; and operations can be undone from the operation log.

Recently, one of our engineers set out to replace git with ❯ Read more