bazel-remote Build Cache

AWS Developer Tools

a fast, self hosted remote build cache for bazel, buck and goma

Base
Hardened build
minimal ports, security patches applied at build time
Access
Unique credentials
generated on first boot, readable only by root
Verified
Boots working
services pass a health gate before release
Support
24/7, 365 days
by email and live chat, 24 hour response SLA

Overview

bazel-remote is a fast, self hosted remote build cache that speaks the HTTP and gRPC Remote Cache protocols used by Bazel, Buck and Goma. When your build and CI machines share a remote cache they download previously compiled artifacts and action results instead of rebuilding them, so local and continuous integration builds get dramatically faster. It runs as a single static Go binary managed by systemd, storing content addressable blobs and action cache entries on disk with a configurable size cap and least recently used eviction.

Why the cloudimg image

The cloudimg image is secure by default: HTTP Basic Auth is enforced on both the HTTP and gRPC interfaces, and a unique username and password are generated on each instance's first boot and written to a root only file, so the cache is never open and no credential is baked in. A fail secure bootstrap gate stops the cache starting until that per instance credential exists. The cache store lives on its own dedicated data volume, separate from the operating system disk, and every launch refreshes itself to the newest release. It ships with a paired deployment guide and 24/7 cloudimg support.

Common uses

  • Share a remote build cache across a team's Bazel, Buck or Goma builds so compiled artifacts and action results are reused instead of rebuilt
  • Speed up continuous integration by giving CI runners a shared cache of previous build outputs
  • Run a self hosted, authenticated cache on your own network with the store on a dedicated, resizable data volume

Key features

  • bazel-remote, a fast self-hosted remote build cache for Bazel, Buck and Goma, installed and hardened as a single static Go binary managed by systemd. It serves the HTTP and gRPC Remote Cache protocols so your build and CI machines share compiled artifacts and action results, and the cache store lives on a dedicated data volume separate from the OS disk.
  • Secure by default with no known bootstrap credential and no open cache: HTTP Basic Auth is enforced on both the HTTP and gRPC interfaces. On first boot a unique username and a long random password are generated for this specific instance and written to a root owned file, and a fail secure bootstrap gate ensures the cache cannot start at all until that credential exists, so the image can never come up as an open cache.
  • 24/7 expert technical support from cloudimg with a one hour average response time for critical issues. Our engineers help with .bazelrc integration, sizing the cache and its data volume, HTTP and gRPC client configuration, restricting access with the security group, TLS termination, and bazel-remote version upgrades.

Description

This is a repackaged open source software product wherein additional charges apply for cloudimg support services.

bazel-remote is a fast, self-hosted remote build cache that speaks the HTTP and gRPC Remote Cache protocols used by Bazel, Buck and Goma, so your build and CI machines share compiled artifacts and action results instead of rebuilding them. This image delivers it fully installed and hardened as a single static Go binary managed by systemd, so a production ready cache is operational within minutes of launch, with no manual package installation and no configuration to write.

Unlike a bare deployment, this image is secure by default. bazel-remote normally starts unauthenticated on every interface; here HTTP Basic Auth is enforced on both the HTTP endpoint on port 8080 and the gRPC endpoint on port 9092, and there is no shared or default credential. A unique username and password are generated on each instance's first boot and written to a root only file, so every request is authenticated from the very first cache hit. A fail secure bootstrap gate ensures the cache server cannot start at all until that per-instance credential exists, so the image can never come up as an open cache. On first boot the appliance also refreshes itself to the newest bazel-remote release, so every launch runs current software.

The cache stores Content Addressable Storage blobs and Action Cache entries on disk with a configurable size cap and least recently used eviction, exposes Prometheus metrics and a status endpoint, and drops straight into an existing workflow by pointing your .bazelrc at the cache. The cache store lives on a dedicated data volume, separate from the operating system disk, so it can be resized and snapshotted independently and its size cap raised without touching root.

Key capabilities: a shared remote build cache served over both HTTP and gRPC for Bazel, Buck and Goma; HTTP Basic Auth enforced on both interfaces with a unique per instance credential and no baked login; a fail secure bootstrap gate that refuses to serve until a credential exists; a dedicated data volume for the cache store; automatic refresh to the newest release on first boot; and Prometheus metrics and a status endpoint for monitoring. Clients that share a cache see dramatically faster local and CI builds. Get started by reading the generated credential from the root only file, then point your build at the cache with build --remote_cache to start sharing artifacts.

This is a repackaged open source software product with additional charges for cloudimg support services. bazel-remote is distributed under the Apache License 2.0. Bazel is a trademark of its respective owner. All product and company names are trademarks or registered trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.

Related technologies

bazelbazel remotebuild cacheremote cachebuckgomacideveloper toolsgrpcself hosted