Code Monkey home page Code Monkey logo

ibilalkayy / nativelink Goto Github PK

View Code? Open in Web Editor NEW

This project forked from tracemachina/nativelink

0.0 0.0 0.0 46.86 MB

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.

Home Page: https://nativelink.com

License: Apache License 2.0

Shell 0.97% C++ 0.01% Python 0.30% Go 1.80% Rust 90.46% Nix 2.17% Dockerfile 0.16% Starlark 4.13%

nativelink's Introduction

NativeLink

Homepage GitHub stars OpenSSF Scorecard OpenSSF Best Practices Slack License

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.

NativeLink Explained in 90 seconds

๐Ÿ”‘ Key Features

  1. Advanced Build Cache:

    • Stores and reuses results of previous build steps for unchanged components
    • Significantly reduces build times, especially for incremental changes
  2. 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 environment

NativeLink seamlessly integrates with build tools that use the Remote Execution protocol, such as Bazel, Buck2, Goma, and 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. 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 for instructions on how to build from source with Bazel, Cargo, and Nix.

๐Ÿ“ฆ Prebuilt images

Fast to spin up, but currently limited to x86_64 systems. See the container registry for all image tags and the contribution docs for how to build the images yourself.

Linux x86_64

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.1 \
    config

Windows x86_64

# 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.1 `
    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.

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

curl -O \
    https://raw.githubusercontent.com/TraceMachina/nativelink/main/nativelink-config/examples/basic_cas.json

nix run github:TraceMachina/nativelink ./basic_cas.json

See the contribution docs for further information.

โœ๏ธ Contributors

NativeLink contributors

๐Ÿค Contributing

Visit our Contributing guide to learn how to contribute to NativeLink. We welcome contributions from developers of all skill levels and backgrounds!

๐Ÿ“Š Stats

Alt

๐Ÿ“œ License

Copyright 2020โ€“2024 Trace Machina, Inc.

Licensed under the Apache 2.0 License, SPDX identifier Apache-2.0.

nativelink's People

Contributors

allada avatar aaronmondal avatar renovate[bot] avatar chrisstaite-menlo avatar marcussorealheis avatar blakehatch avatar adam-singer avatar zbirenbaum avatar steedmicro avatar caass avatar aleksdmladenovic avatar schahinrohani avatar nfarah86 avatar blizzardc0der avatar bclark8923 avatar tyr-one avatar matdexir avatar jaroeichler avatar dependabot[bot] avatar froody avatar mhz5 avatar krishmoran avatar triplekai avatar jhpratt avatar eltociear avatar harper-carroll avatar dolcetriade avatar cormacrelf avatar chrisstaite avatar ibilalkayy avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.