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 get | How reprobuild does it | See it for yourself |
|---|---|---|
| An unchanged action is skipped, and a changed input re-runs it, even an input you never declared | Each action runs under a monitor that records what it read, probed and listed; the record is part of the action's fingerprint | How caching stays correct |
| Your shell, your tasks and your services come from the same file as your build | The project file, repro.nim, declares the development environment, tasks and services next to the packages | Enter a project's environment |
| A change in one repository is built against the others without publishing anything | Repositories sit side by side in a workspace; develop mode builds a dependency from its local checkout | Work 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 buildSee 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 shellSee 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
| You | Start with |
|---|---|
| Work in a codebase that already uses reprobuild | Enter a project's environment, then Join a workspace |
| Own a project's build and CI | Conventions and the three modes, then Build an existing project |
| Maintain a workspace of many repositories | Coming from repo and git submodules |
| Already know a tool reprobuild replaces | Coming from another tool |
Where to find what
| Section | Read it when you want to |
|---|---|
| Install | Install repro on Linux, macOS or Windows |
| Tutorials | Learn by doing, one guided path at a time |
| Guides | Reach one goal: build, test, environments, tasks and services, workspaces, machines, CI and caches, troubleshooting |
| Concepts | Understand how reprobuild works and why |
| Coming from… | Map what you know from Nix, Bazel, direnv, just, repo or Terraform onto reprobuild |
| Reference | Look up a command, a file format or a term |