Build Automation umfasst alle Werkzeuge und Praktiken, die den Übergang von Quellcode zu lauffähigen Artefakten — Binärdateien, Container-Images, Pakete, statische Webseiten, Installer — automatisieren. Das schließt Kompilierung, Linking, Code-Generierung, Asset-Verarbeitung, Tests, Paketierung und Veröffentlichung ein. Klassische Werkzeuge sind make, MSBuild, Maven, Gradle, sbt, npm, Yarn, pnpm, dotnet build, Cargo, Bazel, Buck, Pants, Nx und Turbo. Sie werden lokal in Entwickler-Setups und in CI/CD-Pipelines gleichermaßen eingesetzt.
Eingesetzt wird Build Automation in nahezu jedem nicht-trivialen Software-Projekt. Moderne Build-Werkzeuge bieten inkrementelle Builds (nur geänderte Teile neu bauen), parallelisierte Ausführung, Caching (lokal und remote, z. B. über Bazel Remote Cache, Gradle Build Cache, Turborepo Remote Cache), Reproduzierbarkeit (deterministische, hermetische Builds wie bei Bazel und Nix) sowie Toolchain-Management. Im Cloud-nativen Umfeld kommen Container-Build-Werkzeuge wie BuildKit, Buildah, Kaniko, ko und Jib hinzu.
Manuelle Builds (‚developer-is-build-master') sind nicht reproduzierbar, schwer parallelisierbar und scheitern an wachsenden Codebases. Build Automation liefert deterministische Builds, die unabhängig vom Entwickler-Setup das gleiche Ergebnis erzeugen, sowie Mechanismen, um in großen Codebases nur das Notwendige zu bauen. Damit sinkt die Build-Zeit dramatisch — bei sehr großen Repos teils von Stunden auf Minuten —, was den Feedback-Loop in CI/CD signifikant verkürzt.
Historisch ist make (Stuart Feldman, Bell Labs, 1976) der Urahn aller Build-Werkzeuge — ein zeilenbasiertes Werkzeug mit Abhängigkeitsgraph, das bis heute in vielen C/C++- und Embedded-Projekten unverzichtbar ist. Spätere Generationen (Ant, Maven, MSBuild, Gradle) führten projekt- und plattformspezifische Modelle ein. Mit Bazel (Google, 2015 als Open Source) erschien ein hermetisches, hochskalierbares Build-System, das in seinen Wurzeln auf das Google-interne Werkzeug "Blink/Blaze" zurückgeht. Im Frontend-Bereich haben Werkzeuge wie webpack, Rollup, esbuild, Vite und Turbopack die Build-Welt der JavaScript-/TypeScript-Entwicklung neu strukturiert.
In Stuart Feldmans Originalveröffentlichung "Make — A Program for Maintaining Computer Programs" (1979) ist der berüchtigte Tab-statt-Spaces-Dialekt — Befehle in einem Makefile müssen mit Tab eingeleitet werden — bereits dokumentiert. Feldman selbst hat in späteren Interviews eingeräumt, dass diese Designentscheidung in der Hektik des Entwicklungsalltags getroffen wurde und sich im Nachhinein als suboptimal erwies; sie ließ sich jedoch wegen der enormen Verbreitung des Tools nie mehr ändern.