Tool-Tipp

Bazel: Googles Build-System ist endlich in Version 1.0 da

(Foto: Shutterstock)

Seit Donnerstag ist Bazel in Version 1.0 öffentlich verfügbar. Das Open-Source-Build-System aus dem Hause Google unterstützt eine große Bandbreite an Plattformen und Programmiersprachen.

Google startete Bazel vor vier Jahren. Der Grund? Die Google-Entwickler selbst hatten Bedarf an hochgradig skalierbaren Builds. Wer schon öfter an größeren Projekten gearbeitet hat, kennt das vielleicht: Zwischen Unit-Test und neuem Feature werden in jedem Sprint typischerweise mehrere neue Dateien zu einem Projekt hinzugefügt, bis das Ganze irgendwann derart aufgeblasen ist, dass die Skalierung der Builds, gerade in größeren Projekten, manchmal mehrere Sekunden dauert.

Der „Build“ ist der Prozess, in dem Dateien und andere Assets eurer Anwendung in ihre finale, vom Endnutzer verwendete Form konvertiert werden. In der Build-Phase, werden zum Beispiel eure Source-Files kompiliert, kompilierte Dateien zu komprimierten Formaten (zum Beispiel .jar oder .zip) verpackt, Installationsdateien erstellt und Datenbank-Schemata erstellt und aktualisiert. Automatisierte Builds sind dann möglich, wenn diese Schritte wiederholbar sind, Entwickler an keiner Stelle eingreifen müssen und zur Ausführung keine anderen Informationen nötig sind als die, die euer Repo beinhaltet.

Bessere Build-Performance? – Inkrementelle Builds!

Inkrementelle Builds sind sowas wie der Schlüsselfaktor für eine bessere Build-Performance. Code ändert sich meistens in kleinen Inkrementen. Daher ist es wenig sinnvoll, die gesamte Anwendung bei jeder kleinen Änderung neu zu erstellen. Besser: Nur das neu erstellen, was sich wirklich ändert. Von den Änderungen betroffene Teile eurer Codebase natürlich auch.

An dieser Stelle kommt Bazel ins Spiel. Mit Bazel könnt ihr eure Applikation in verschiedene Build-Units unterteilen. In Angular zum Beispiel sind die Build-Units auf der Ebene der NgModules definiert. Der Umfang eines Builds kann also theoretisch so granular sein wie ein einzelnes NgModul. Wenn jetzt eine Änderung in einem NgModul erfolgt, die nur dieses Modul betrifft, muss folglich auch nur dieses Modul neu erstellt werden. Ändert ihr die öffentliche API von irgendeinem Teil innerhalb eures NgModules, muss natürlich jedes andere, das darauf referenziert, ebenfalls neu gebaut werden.

Wie auch immer – die Build-Time eurer Anwendung ist auf jeden Fall deutlich kürzer als sonst – einfach weil pro Build deutlich weniger Code durchgepflügt werden muss. Damit ihr auch was davon habt, entschieden sich die Bazel-Entwickler für die Veröffentlichung unter einer Open-Source-Lizenz. Die wachsenden Nutzerzahlen scheinen Google rechtzugeben: skalierbare, reproduzierbare, multilinguale Builds sind gefragt. Viele der hauseigenen offen lizenzierten Projekte, wie Tensorflow oder Angular, verwenden Bazel.

Das kann Bazel – laut Google-Blogpost

  • Die Builds in Bazel sind schnell. Das Tool ermöglicht inkrementelle Builds und Testdurchläufe – lokal und in Continuous-Integration-Test-Systemen.
  • Bazel bietet Unterstützung für Builds und Tests in multiplen Sprachen und Plattformen. Über einen einzelnen Command sollt ihr euren gesamten Source Tree erstellen und testen können – unabhängig der in euren Projekten verwendeten Kombinationen aus Programmiersprache und Plattform.
  • Der Spaß funktioniert auf Linux, macOS und Windows gleichermaßen.
  • Das Tool kommt mit einer einheitlichen Erweiterungssprache – nämlich Starlark –, über die ihr eure Builds definieren könnt – unabhängig von den Sprachen und Plattformen, die ihr verwendet.
  • Bazel verbindet sich mit verteilten Remote-Execution- und Caching-Services – und eure Builds können skalieren.

Der 1.0-GA-Release kommt mit Semantic Versioning – Rückwärtskompatibilität von Folgeversionen zu Version 1.0 ist also auf jeden Fall schon mal sicher. Zwischen allen Major-Version-Releases sollen mindestens drei Monate liegen, Minor-Updates wird es monatlich auf GitHub geben.

Long-Term-Support und sonstige Features

Außerdem kommt Version 1.0 mit Long-Term-Support. So könnt ihr als Nutzer sicher sein, dass etwaige Bugs und Schwachstellen in der Software zuverlässig gefixed werden. Außerdem nannte der Blog-Post „well-rounded features for Angular, Android, Java und C++“, wie etwa End-to-End-Support für Remote Execution und Caching sowie Support für Dependencies von Drittanbietern und die Standard-Packaging-Manager.

Wer Bazel bisher noch nicht kannte, aber Verwendung dafür finden würde: Hier findet ihr Tutorials für eure Lieblingsprogrammiersprache. Außerdem gibt’s eine Mailing-List, einen Slack-Channel und einen Issue-Tracker auf GitHub – ihr seid herzlich willkommen, Bugs zu reporten oder Wünsche nach weiteren Features zu äußern.

Vielleicht ebenfalls interessant für dich: 

Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Schreib den ersten Kommentar!

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!

Hey du! Schön, dass du hier bist. 😊

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team bestehend aus 65 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Danke für deine Unterstützung.

Digitales High Five,
Stephan Dörner (Chefredakteur t3n.de) & das gesamte t3n-Team

Anleitung zur Deaktivierung