bazel-tools - Tools for dealing with very large Bazel-managed repositories

  •        13

This repository contains a collection of tools for working with Bazel workspaces; mostly tailored towards writing JVM backend services. These tools are being used in production at Spotify but have been built for very specific use-cases. They will continue to evolve and cover more use-cases as they mature.



Related Projects

Bazel - Google's own build tool

  •    Java

Bazel is a build tool that builds code quickly and reliably. It is used to build the majority of Google's software, and thus it has been designed to handle build problems present in Google's development environment. A comprehensive, built-in set of rules lets you build software for a wide variety of languages and platforms right out of the box.

rules_go - Go rules for Bazel

  •    Go

The master branch is only guaranteed to work with the latest version of Bazel.Create a file at the top of your repository named WORKSPACE and add one of the snippets below, verbatim. This will let Bazel fetch necessary dependencies from this repository and a few others.

guetzli - Perceptual JPEG encoder

  •    C++

Guetzli is a JPEG encoder that aims for excellent compression density at high visual quality. Guetzli-generated images are typically 20-30% smaller than images of equivalent quality generated by libjpeg. Guetzli generates only sequential (nonprogressive) JPEGs due to faster decompression speeds they offer.There's also a Bazel build configuration provided. If you have Bazel installed, you can also compile Guetzli by running bazel build -c opt //:guetzli.

colossus - Colossus — An example microservice architecture for Kubernetes using Bazel, Go, Java, Docker, Kubernetes, Minikube, Gazelle, gRPC, Prometheus, Grafana, and more

  •    Python

Wait a second, these services don't do anything meaningful! Nope, they sure don't. But that's okay because the point of this project is to show you how to get the basic (yet not-at-all-trivial) plumbing to work. Colossus is a boilerplate project that's meant as a springboard to more complex and meaningful projects. Getting all of these technologies to work together was a real challenge. I had to dig through countless GitHub issues and dozens of example projects to make all these things work together. I'm offering this repo as a starter pack for other people with a Bazel monorepo targeting Kubernetes.

mosh-chrome - Mosh for Chrome

  •    C++

This is a Mosh client port for the Chrome web browser using Native Client. It is particularly useful with Chrome OS. You need to build on Linux, and probably Ubuntu Linux. You will also need the Bazel build system installed. Go here to get it. There's a Debian package, so installation is easy; the only caveat is that it requires Java (sorry).

tensorflow_cc - Build and install TensorFlow C++ API library.

  •    CMake

This repository makes possible the usage of the TensorFlow C++ API from the outside of the TensorFlow source code folders and without the use of the Bazel build system. This repository contains two CMake projects. The tensorflow_cc project downloads, builds and installs the TensorFlow C++ API into the operating system and the example project demonstrates its simple usage.

android-arscblamer - ArscBlamer is a command-line tool that can parse an Android app's resources

  •    Java

ArscBlamer is a command-line tool that can parse an Android app's resources.arsc file and extract useful, actionable information about its contents.NB: Relative file paths for the APK will not work with bazel run. To use relative file paths, see the Building section.

email-lab - 📩 Starter project for designing and testing HTML email templates

  •    Javascript

This a project for developing and testing email templates. It uses Grunt, a command-line build tool, to streamline and simplify the creation of email templates. Email template can be built with re-usable components (like header and footer) and can be styled using traditional CSS or Sass that will be compiled into normal CSS. The build tool will convert these traditional styling rules into embedded and inlined styles required for HTML in most email clients. See the tools section below for more information.

style-dictionary - A build system for creating cross-platform styles.

  •    Javascript

Style once, use everywhere. A Style Dictionary is a system that allows you to define styles once, in a way for any platform or language to consume. A single place to create and edit your styles, and a single command exports these rules to all the places you need them - iOS, Android, CSS, JS, HTML, sketch files, style documentation, etc. It is available as a CLI through npm, but can also be used like any normal node module if you want to extend its functionality.

distroless - 🥑 Language focused docker images, minus the operating system.

  •    Python

"Distroless" images contain only your application and its runtime dependencies. They do not contain package managers, shells any other programs you would expect to find in a standard Linux distribution.For more information, see this talk (video).

asylo - Asylo Framework

  •    C++

The v0.2 documentation can be found at Example code can be found in the asylo/examples directory. This directory has a working Bazel workspace and example applications that can be used as the start of your own project.

distroless - 🥑 Language focused docker images, minus the operating system.

  •    Python

"Distroless" images contain only your application and its runtime dependencies. They do not contain package managers, shells or any other programs you would expect to find in a standard Linux distribution. For more information, see this talk (video).

sparkle - Haskell on Apache Spark.

  •    Haskell

sparkle [spär′kəl]: a library for writing resilient analytics applications in Haskell that scale to thousands of nodes, using Spark and the rest of the Apache ecosystem under the hood. See this blog post for the details. There is experimental support for bazel. This mechanism doesn't require executing sparkle package.

windows-build-tools - :package: Install C++ Build Tools for Windows using npm

  •    TypeScript

After installation, npm will automatically execute this module, which downloads and installs Visual C++ Build Tools, provided free of charge by Microsoft. These tools are required to compile popular native modules. If not already installed, it will also install Python 2.7, configuring your machine and npm appropriately. Both installations are conflict-free, meaning that they do not mess with existing installations of Visual Studio, C++ Build Tools, or Python. If you see anything that indicates otherwise, please file a bug.

Command-Line Database Builder


A command-line tool for interacting with a DBMS command-line interface (e.g., sqlcmd.exe) to execute a sequential list of SQL scripts against the DBMS. Tool allows for expression replacement in the SQL scripts during execution.

susy - Responsive layout toolkit for Sass

  •    CSS

Susy is a design-agnostic set of tools for creating powerful, custom layouts. We didn't want another grid system full of rules and restrictions — we wanted a power tool for building our own damn systems. Version Three is trimmed down to it's most basic components — functions that can be used to build any grid system. There are two imports to choose from. The default sass/susy comes with un-prefixed versions of the core API functions. If you want Susy to be name-spaced, import sass/susy-prefix instead.

phing - PHing Is Not GNU make; it's a PHP project build system or build tool based on Apache Ant.

  •    PHP

(PH)ing (I)s (N)ot (G)NU make; it's a PHP project build system or build tool based on Apache Ant. You can do anything with it that you could do with a traditional build system like GNU make, and its use of simple XML build files and extensible PHP "task" classes make it an easy-to-use and highly flexible build framework. Features include running PHPUnit tests (including test result and coverage reports), file transformations (e.g. token replacement, XSLT transformation, Smarty template transformations), file system operations, interactive build support, SQL execution, SVN/GIT operations, tools for creating PEAR packages, documentation generation (DocBlox, PhpDocumentor) and much, much more.



PoshBuild is a set of tools for Powershell snap-in developers. It includes tools to generate help files for Cmdlets, and to generate display format information for .NET types. Those tools are available as MSBuild tasks so these files can be generated as part of a build process.

buildout - Buildout is a deployment automation tool written in and extended with Python

  •    Python

Assembly runs the gamut from stitching together libraries to create a running program, to production deployment configuration of applications, and associated systems and tools (e.g. run-control scripts, cron jobs, logs, service registration, etc.). Buildout might be confused with build tools like make or ant, but it is a little higher level and might invoke systems like make or ant to get its work done.

bpftools - BPF Tools - packet analyst toolkit

  •    Python

Here you can find a set of tool for analyzing and processing of pcap traffic dumps. The aim of this tool is to help creating BPF rules that will match (and drop) malicious traffic. This script generates a simple bash script that contains iptables rules that drop traffic based on selected parameters.