Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tracemachina/nativelink
NativeLink is an open source high-performance build cache and remote execution server, compatible with Bazel, Buck2, Reclient, and other RBE-compatible build systems. It offers drastically faster builds, reduced test flakiness, and specialized hardware.
https://github.com/tracemachina/nativelink
apache2 bazel buck2 build-automation build-system chromium ci content-addressable-storage free nix re-client remote-execution rust simulation
Last synced: 11 days ago
JSON representation
NativeLink is an open source high-performance build cache and remote execution server, compatible with Bazel, Buck2, Reclient, and other RBE-compatible build systems. It offers drastically faster builds, reduced test flakiness, and specialized hardware.
- Host: GitHub
- URL: https://github.com/tracemachina/nativelink
- Owner: TraceMachina
- License: apache-2.0
- Created: 2020-12-24T23:55:21.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2024-10-29T08:54:08.000Z (12 days ago)
- Last Synced: 2024-10-29T10:03:04.780Z (12 days ago)
- Topics: apache2, bazel, buck2, build-automation, build-system, chromium, ci, content-addressable-storage, free, nix, re-client, remote-execution, rust, simulation
- Language: Rust
- Homepage: https://nativelink.com
- Size: 47 MB
- Stars: 1,167
- Watchers: 18
- Forks: 109
- Open Issues: 146
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
- awesome-rust - tracemachina/nativelink - [NativeLink](https://www.nativelink.com) is a Backend Remote Execution platform written in rust for client build systems such as [Buck2](https://buck2.build/), [Bazel](https://bazel.build/), [Pants](https://www.pantsbuild.org/), etc.. [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/TraceMachina/nativelink/badge)](https://securityscorecards.dev/viewer/?uri=github.com/TraceMachina/nativelink) [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/8050/badge)](https://www.bestpractices.dev/projects/8050) [![Slack](https://img.shields.io/badge/slack--channel-blue?logo=slack)](https://nativelink.slack.com/join/shared_invite/zt-281qk1ho0-krT7HfTUIYfQMdwflRuq7A#/shared-invite/email) (Development tools / Build system)
- fucking-awesome-rust - tracemachina/nativelink - 🌎 [NativeLink](www.nativelink.com) is a Backend Remote Execution platform written in rust for client build systems such as 🌎 [Buck2](buck2.build/), 🌎 [Bazel](bazel.build/), 🌎 [Pants](www.pantsbuild.org/), etc.. [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/TraceMachina/nativelink/badge)](https://securityscorecards.dev/viewer/?uri=github.com/TraceMachina/nativelink) [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/8050/badge)](https://www.bestpractices.dev/projects/8050) [![Slack](https://img.shields.io/badge/slack--channel-blue?logo=slack)](https://nativelink.slack.com/join/shared_invite/zt-281qk1ho0-krT7HfTUIYfQMdwflRuq7A#/shared-invite/email) (Development tools / Build system)
README
enter the shipstorm
[![Homepage](https://img.shields.io/badge/Homepage-8A2BE2)](https://nativelink.com)
[![GitHub stars](https://img.shields.io/github/stars/tracemachina/nativelink?style=social)](https://github.com/TraceMachina/nativelink)
[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/TraceMachina/nativelink/badge)](https://securityscorecards.dev/viewer/?uri=github.com/TraceMachina/nativelink)
[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/8050/badge)](https://www.bestpractices.dev/projects/8050)
[![Slack](https://img.shields.io/badge/slack--channel-blue?logo=slack)](https://nativelink.slack.com/join/shared_invite/zt-281qk1ho0-krT7HfTUIYfQMdwflRuq7A#/shared-invite/email)
[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)## What's NativeLink?
NativeLink is an efficient, high-performance build cache and remote execution system that accelerates software compilation and testing while reducing infrastructure costs. It optimizes build processes for projects of all sizes by intelligently caching build artifacts and distributing tasks across multiple machines.
NativeLink is trusted in production environments to reduce costs and developer iteration times--handling over **one billion requests** per month for its customers, including large corporations such as **Samsung**.
## 🔑 Key Features
1. **Advanced Build Cache**:
- Stores and reuses results of previous build steps for unchanged components
- Significantly reduces build times, especially for incremental changes2. **Efficient Remote Execution**:
- Distributes build and test tasks across a network of machines
- Parallelizes workloads for faster completion
- Utilizes remote resources to offload computational burden from local machines
- Ensures consistency with a uniform, controlled build environmentNativeLink seamlessly integrates with build tools that use the Remote Execution protocol, such as [Bazel](https://bazel.build), [Buck2](https://buck2.build), [Goma](https://chromium.googlesource.com/infra/goma/client/), and [Reclient](https://github.com/bazelbuild/reclient). It supports Unix-based operating systems and Windows, ensuring broad compatibility across different development environments.
## 🚀 Quickstart
To start, you can deploy NativeLink as a Docker image (as shown below) or by using our cloud-hosted solution, [NativeLink Cloud](https://app.nativelink.com). It's **FREE** for individuals, open-source projects, and cloud production environments, with support for unlimited team members.
The setups below are **production-grade** installations. See the [contribution docs](https://nativelink.com/docs/contribute/nix/) for instructions on how to build from source with [Bazel](https://nativelink.com/docs/contribute/bazel/), [Cargo](https://nativelink.com/docs/contribute/cargo/), and [Nix](https://nativelink.com/docs/contribute/nix/).
### 📦 Prebuilt images
Fast to spin up, but currently limited to `x86_64` systems. See the [container
registry](https://github.com/TraceMachina/nativelink/pkgs/container/nativelink)
for all image tags and the [contribution docs](https://nativelink.com/docs/contribute/nix)
for how to build the images yourself.**Linux x86_64**
```bash
curl -O \
https://raw.githubusercontent.com/TraceMachina/nativelink/main/nativelink-config/examples/basic_cas.json# See https://github.com/TraceMachina/nativelink/pkgs/container/nativelink
# to find the latest tag
docker run \
-v $(pwd)/basic_cas.json:/config \
-p 50051:50051 \
ghcr.io/tracemachina/nativelink:v0.5.3 \
config
```**Windows x86_64**
```powershell
# Download the configuration file
Invoke-WebRequest `
-Uri "https://raw.githubusercontent.com/TraceMachina/nativelink/main/nativelink-config/examples/basic_cas.json" `
-OutFile "basic_cas.json"# Run the Docker container
# Note: Adjust the path if the script is not run from the directory containing basic_cas.json
docker run `
-v ${PWD}/basic_cas.json:/config `
-p 50051:50051 `
ghcr.io/tracemachina/nativelink:v0.5.3 `
config
```### ❄️ Raw executable with Nix
Slower, since it's built from source, but more flexible and supports MacOS.
Doesn't support native Windows, but works in WSL2.Make sure your Nix version is recent and supports flakes. For instance, install
it via the [next-gen nix installer](https://github.com/NixOS/experimental-nix-installer).> [!CAUTION]
> Executables built for MacOS are dynamically linked against libraries from Nix
> and won't work on systems that don't have these libraries present.**Linux, MacOS, WSL2**
```bash
curl -O \
https://raw.githubusercontent.com/TraceMachina/nativelink/main/nativelink-config/examples/basic_cas.jsonnix run github:TraceMachina/nativelink ./basic_cas.json
```See the [contribution docs](https://nativelink.com/docs/contribute/nix) for further information.
## ✍️ Contributors
## 🤝 Contributing
Visit our [Contributing](https://github.com/tracemachina/nativelink/blob/main/CONTRIBUTING.md) guide to learn how to contribute to NativeLink. We welcome contributions from developers of all skill levels and backgrounds!
## 📊 Stats
![Alt](https://repobeats.axiom.co/api/embed/d8bfc6d283632c060beaab1e69494c2f7774a548.svg "Repobeats analytics image")
## 📜 License
Copyright 2020–2024 Trace Machina, Inc.
Licensed under the Apache 2.0 License, SPDX identifier `Apache-2.0`.