/awesome-bazel

A curated list of Bazel rules, tooling and resources.

Apache License 2.0Apache-2.0

Awesome Bazel Awesome

{Fast, Correct} - Choose two

Bazel is an open-source build and test tool similar to Make, Maven, and Gradle. It uses a human-readable, high-level build language. Bazel supports projects in multiple languages and builds outputs for multiple platforms. Bazel supports large codebases across multiple repositories, and large numbers of users. (via docs)

A curated list of Bazel rules, tooling and resources.

Have something to contribute or discuss? Open a pull request or create an issue.


Contents

Rules

Language/Platform Repository/Documentation
Amazon web services (AWS)
Android
Apple (iOS, macOS, tvOS, watchOS)
ANTLR
ARM Mbed OS
Bison
BOSH
Brotli
C++
C#
Clojure
Closure
CSS
CMake
CocoaPods
CODEOWNERS
D
Dart
Databricks
Docker
ebook (pdf, epub, mobi)
ECS
Elm
Emacs Lisp (elisp)
Emscripten
Flex
Go
Graal
Grafana
Groovy
GWT
Haskell
Helm (Kubernetes)
Homebrew
Hugo
Idris
Java
JFlex
Kotlin
Kubernetes
LaTeX
LLVM toolchain
M4
Manifest of build artifacts
  • kindlyops/rules_manifest: Take a list of artifacts such as zip files for AWS Lambda, and collect them into a single directory with each file named by the content hash, along with a JSON manifest of the files and original labels.
Maven
Maya
Microsoft Azure
NativeScript
Nixpkgs
Node.js / JavaScript
OCaml
OCI Containers
OpenAPI/Swagger
Packaging (RPM/DEB)
Pandoc
PHP
Protobuf
Purescript
Python
Ragel
R
ReasonML, BuckleScript
Ruby
Rust
Sass
Scala
Shell
SonarQube
Swift
Terraform
Twirl
TypeScript
Verilog
Web (HTML, CSS, JS, assets)

Tooling

General

Toolchains

Toolchains enable authors to decouple their rule logic from platform-based selection of tools.

Starlark

Starlark (formerly called Skylark) is Bazel's domain-specific language for writing BUILD definitions and rules.

Remote caching and execution

  • bazel-remote - A simple remote cache for Bazel that supports HTTP and gRPC, with optional proxy backends for S3/GCS/HTTP.
  • bazelbuild/bazel-buildfarm - Self-hosted remote caching and execution service written in Java
  • Buildbarn - Self-hosted remote caching and execution service written in Go
  • buildbuddy-io/buildbuddy - Cloud or self-hosted remote caching and execution service written in Go, with Web UI for viewing and debugging build logs
  • BuildGrid - Self-hosted remote caching and execution service written in Python
  • Asana/bazels3cache - Small web server for a Bazel cache that proxies to S3, allowing Bazel to work offline and has async uploads to make Bazel faster.

Project generators

Tools for generating WORKSPACE and BUILD files from source code.

  • blakefiler.py - Generate a Makefile and tarball-able distribution using bazel query
  • Lavender - Generate Visual Studio projects that uses Bazel for the actual building
  • Jadep: Java Automated Dependencies - Generate BUILD files automatically for an existing Java project with class dependency analysis.
  • BUILD File Generator - Similar tool for existing Java projects.
  • Gazelle - BUILD file generator for Go projects.
  • Pazel - Generate Bazel BUILD files for Python
  • Tulsi for Xcode - A project generator for Xcode projects
  • pinterest/xchammer - XCHammer generates Xcode projects from a Bazel Workspace
  • create-bazel-workspace - Generate a new multi-language Bazel workspace with minimal configuration
  • Gazelle JS Plugin Generate BUILD files automatically for an existing Javascript or Typescript project with npm dependency analysis.
  • llvmbzlgen - Tools for generating Bazel BUILD targets from LLVM CMakeLists

Editors

BUILD file tools

bazelbuild/buildtools contains:

  • Buildifier - Prettifier for BUILD and .bzl files
  • Buildozer - Manipulate BUILD file contents from the command line
  • unused_deps - Find unneeded dependencies in BUILD files

Migration

Misc

Resources

Designs

Tutorials

Official

Toolchains

Codelabs

Community

Online courses

Projects

A list of projects built with Bazel:

  • bazelment/trunk: A collection of C++/Java OSS with BUILD files. e.g. grpc, guava, netty.
  • tensorflow/tensorflow: Computation using data flow graphs for scalable machine learning.
  • abseil/abseil-cpp - OSS collection of C++ code (compliant to C++11) designed to augment the C++ standard library.
  • GoogleCloudPlatform/distroless - Language focused docker images, minus the operating system.
  • google/subpar - Subpar is a utility for creating self-contained python executables. It is designed to work well with Bazel.
  • alexeagle/angular-bazel-example: Building an Angular application with Bazel
  • google/startup-os - Working examples of Google's Open Source tools and Cloud.
  • lucperkins/colossus - An example microservice architecture for Kubernetes using Bazel, Go, Java, Docker, Kubernetes, Minikube, Gazelle, gRPC, Prometheus, Grafana, and more.
  • squzy/squzy - is a high-performance open-source monitoring system written in Golang with Bazel. Using Bazel for testing, building and dockerize.

Demos

Bazel demo projects:

Articles

Videos

Podcasts

Books

Slides

Blogs

Community

Misc