Skip to content

Reprobuild documentation

Reprobuild (repro) builds your software, provides the environment you develop it in, runs its tasks and local services, and keeps a workspace of many repositories in step, from one description of each project.

What it does, and how

What you getHow reprobuild does itSee it for yourself
An unchanged action is skipped, and a changed input re-runs it, even an input you never declaredEach action runs under a monitor that records what it read, probed and listed; the record is part of the action's fingerprintHow caching stays correct
Your shell, your tasks and your services come from the same file as your buildThe project file, repro.nim, declares the development environment, tasks and services next to the packagesEnter a project's environment
A change in one repository is built against the others without publishing anythingRepositories sit side by side in a workspace; develop mode builds a dependency from its local checkoutWork on a dependency's source

Three ways to start

Build a project you already have

In a Cargo, Go, CMake, Nim or other project that follows its ecosystem's layout, add a short project file and run:

repro build

See Build an existing project.

Work in a project's development environment

In a project that has a repro.nim, start a shell with its tools on PATH:

repro shell

See Enter a project's environment.

Join a multi-repository workspace

Clone a workspace and the repositories its default projects need:

repro workspace init <organisation-or-url>

See Join a workspace.

To learn reprobuild step by step instead, follow Build your first project.

Start from what you do

YouStart with
Work in a codebase that already uses reprobuildEnter a project's environment, then Join a workspace
Own a project's build and CIConventions and the three modes, then Build an existing project
Maintain a workspace of many repositoriesComing from repo and git submodules
Already know a tool reprobuild replacesComing from another tool

Where to find what

SectionRead it when you want to
InstallInstall repro on Linux, macOS or Windows
TutorialsLearn by doing, one guided path at a time
GuidesReach one goal: build, test, environments, tasks and services, workspaces, machines, CI and caches, troubleshooting
ConceptsUnderstand how reprobuild works and why
Coming from…Map what you know from Nix, Bazel, direnv, just, repo or Terraform onto reprobuild
ReferenceLook up a command, a file format or a term