Remote build cache for our CI fleet
PineCache stores build outputs by content hash so that a compile step runs once and every other machine downloads the result.
It speaks the HTTP cache protocols that Bazel, Gradle, sccache and ccache already support. Artifacts are addressed by SHA-256, uploaded once and fetched many times, which is why most of the traffic here is large downloads of opaque blobs.
What it does
| Tool | Protocol | Endpoint |
|---|---|---|
| Bazel | HTTP remote cache | /cache/ac/, /cache/cas/ |
| Gradle | HTTP build cache | /cache/gradle/ |
| sccache | WebDAV backend | /cache/sc/ |
| ccache | HTTP secondary storage | /cache/cc/ |
Using it
Every request needs a team token. Without one the cache endpoints answer 404, not 401, so that object names cannot be probed. See the documentation for client settings.
Regions
Each region is an independent node with its own disk. Pick the one closest to your runners; nodes do not replicate to each other. Current state is on the status page.