Bazel is the open-source build system that Google released in 2015. Its own FAQ describes it directly as “a flavor of the tool that Google uses to build its server software internally,” noting that “Bazel shares most of its code with the internal tool and its rules are used for millions of builds every day.” That internal tool is named Blaze; the FAQ even asks readers to “refer to Blaze as Bazel,” since the internal name still appears in the codebase.
Bazel’s design goals are speed and correctness. The project’s site explains that “Bazel is fast and reliable” because it “caches all previously done work and tracks changes to both file content and build commands,” which lets it rebuild only what is necessary. Combined with the ability to “build in a highly parallel and incremental fashion,” this makes Bazel well suited to repositories where a full rebuild would be prohibitively slow.
A second pillar is reproducibility. Bazel’s documentation says you can “set up Bazel to run builds and tests hermetically through sandboxing, minimizing skew and maximizing reproducibility.” Sandboxing isolates each build action from the host environment so that the same inputs produce the same outputs, regardless of which machine runs the build, an important property for trustworthy continuous integration.
Bazel was built for scale. The site states that it “supports projects in multiple languages” and “scales” to handle “builds with 100k+ source files” while “working with multiple repositories and user bases in the tens of thousands.” This focus on huge, multi-language monorepos, rather than single-language single-project builds, is what most distinguishes Bazel from earlier build tools.