Build what changed.
Deploy what passed.
Terrabuild uses one dependency graph to build, test, package, and deploy your workspace. It orders every target, runs independent work in parallel, and restores unchanged results from cache.
Build and deploy on the same graph.
Define deployment like any other target, then make it depend on the builds, tests, packages, or infrastructure plans it needs.
Keep the whole run in order
Terrabuild runs prerequisites first and independent targets in parallel. A failed prerequisite stops the targets that depend on it.
Cache by input
Terrabuild fingerprints each target and its inputs. A matching fingerprint restores the saved output instead of running the target again. Insights adds a shared cache for developer machines and CI.
Follow changes through the graph
Change a library and Terrabuild includes the targets that depend on it. Unrelated branches of the graph stay out of the run.
Keep your build and deployment tools.
Terrabuild ships extensions for common build and deployment tools. An FScript file can add another tool without changing or recompiling Terrabuild.
Start with the included extensions.
Use the included commands for common toolchains. A custom FScript extension can define actions, defaults, project discovery, and batching rules for anything else.
Explore extensionsPin the execution environment.
Set an image on an extension to run its actions in the same container locally and in CI. Terrabuild supports Docker and Podman.