Definition „Code Build“

Was ist ein Build?

| Autor / Redakteur: LineFeed / Stephan Augsten

Der Begriff „Build“ meint in der Software-Entwicklung sowohl den Prozess des Zusammenfügens von Programmteilen als auch die fertige Software-Version.
Der Begriff „Build“ meint in der Software-Entwicklung sowohl den Prozess des Zusammenfügens von Programmteilen als auch die fertige Software-Version. (Bild: Alexas_Fotos - Pixabay.com)

Als Build bezeichnet die Softwareentwicklung einerseits den gesamten Prozess der Erzeugung einer kompletten, eigenständig lauffähigen Software und andererseits das Ergebnis dieses Prozesses: das oder die ausführbaren Programme einschließlich aller eventuell benötigten Ressourcen.

Abgesehen von einfachsten Programmen besteht jede Software aus mehreren Quelldateien, die in der Regel vor der Ausführung in ein lauffähiges Konstrukt konvertiert werden müssen. Hier kommt der Begriff „Build“ zum Einsatz. Wie eingangs erwähnt kann damit sowohl der Prozess als auch ein spezifischer Softwarestand gemeint sein, der durch die Version aller beteiligten Quellen sowie gegebenenfalls dynamisch beim Build-Prozess spezifizierter Optionen bestimmt ist.

Abgesehen von einer quelloffenen Software deren Build-Prozess der Endnutzer selbst durchführt ist die Kennzeichnung jedes einzelnen Builds durch eine eindeutige Build-Nummer üblich. Sie kann aus einer einfachen, fortlaufenden Nummerierung bestehen, enthält aber häufig auch die Versionsnummer der zugrundeliegenden Quellen.

Ein Beispiel für die komplexe Form ist die von Google für Android verwendete Build-Nummer. Das Nummernschema beginnt mit einem Buchstaben, der dem Initial des Codenamens der Android-Version entspricht, zum Beispiel N für Nougat. Die weitere Struktur ändert sich zwar mit der Version Oreo, der Inhalt bleibt aber gleich. An zweiter Stelle steht ein Buchstabencode, der den Versionsstand des Quelltexts kennzeichnet. Darauf folgt eine Datumsangabe und an letzter Stelle ein Code, der für jeden Build mit gleicher Version und gleichem Datum sequentiell hochgezählt wird.

Build-Tools automatisieren den Prozess

Der Vorgang des Erstellens lauffähiger Softwarepakete wird meist durch Build-Tools automatisiert, die zugleich die Konsistenz der Rahmenbedingungen zwischen verschiedenen Builds sicherstellen. Ein weit verbreitetes Beispiel für die grundlegenden Eigenschaften von Build-Werkzeugen ist das aus dem Unix-Umfeld stammende Programm „make“. Es liest eine Konfigurationsdatei, die üblicherweise den Namen „Makefile“ trägt und Anweisungen für die einzelnen Phasen eines Build-Prozesses enthält.

Jeder Schritt kann von Bedingungen abhängig gemacht werden, wie zum Beispiel der Existenz oder Aktualität bestimmter Dateien. Das ermöglicht einerseits sicherzustellen, dass alle für einen Build nötigen Schritte in der richtigen Reihenfolge durchgeführt werden. Andererseits lässt sich dadurch überflüssiger Aufwand vermeiden, wenn bei einem weiteren Durchlauf Teilergebnisse des vorangegangenen Build-Prozesses noch aktuell sind.

Wo beginnt und endet ein Build?

Ein Build beinhaltet insbesondere das Kompilieren der Quellen, sofern diese in einer Programmiersprache geschrieben sind, die einen solchen Schritt erfordert (wie zum Beispiel C) oder erlaubt (wie Java oder Python). Zum Build-Prozess gehört allgemein aber auch das Bereitstellen aktueller und „sauberer“ Quellen.

Diese Aufgaben kann ein Build-Tool ebenfalls automatisieren, einerseits etwa durch das Auschecken aus einem Versionskontrollsystem oder den Download eines Quelltextarchivs von einem FTP-Server. Andererseits dient beim Beispiel „make“ üblicherweise das Target „clean“ dazu, die Ergebnisse und Zwischenergebnisse eines vorangegangenen Build-Prozesses zu beseitigen.

Als aktuelle Quelle kann in diesem Fall aber auch der Stand einer älteren Version gemeint sein, wenn beispielsweise aufgrund eines Softwarefehlers ein Rollback notwendig ist. Der Build-Prozess endet entweder mit dem Zusammenpacken der erzeugten Dateien für den Export oder der lokalen Installation, falls er unmittelbar auf dem Zielsystem ausgeführt wurde.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Aktuelle Beiträge zu diesem Thema

Neue Funktionen in Azure DevOps Projects

DevOps über die Cloud implementieren

Neue Funktionen in Azure DevOps Projects

Mit Azure DevOps Projects kommen Unternehmen in den Genuss von Funktionen aus der DevOps-Welt. Da alle Funktionen in der Cloud-Umgebung Microsoft Azure bereitstehen, ist keine eigene Infrastruktur vonnöten. lesen

Build-Projekt mit AWS CodeBuild umsetzen

Amazon Web Services für Entwickler, Teil 5

Build-Projekt mit AWS CodeBuild umsetzen

Mit CodeBuild steht ein voll verwalteter Build-Service in der Cloud zur Verfügung, ähnlich dem Open Build Service von SUSE, aber vollständig integriert mit AWS. Damit können Entwickler ihren auf CodeCommit gehosteten Quellcode kompilieren, Komponententests ausführen und Artefakte erzeugen, die sich dann mit AWS CodeDeploy bereitstellen lassen. lesen

Azure DevOps Projects

Cloud-Apps schneller entwickeln

Azure DevOps Projects

Mit Azure DevOps Projects lassen sich Apps, die auf Ressourcen in Microsoft Cloud-Plattform setzen, sehr schnell entwickeln. Wer also Apps für Azure entwickelt, sollte sich die Möglichkeiten genauer ansehen. lesen

Grafikverarbeitung mit OpenCV

Vom Bildanzeiger bis zur Gesichtserkennung

Grafikverarbeitung mit OpenCV

Viele Bibliotheken vereinfachen dem Entwickler die Arbeit ungemein, dies gilt auch für die Open Cource Computer Vision Library. OpenCV bietet über 2.500 Algorithmen rund um die Verarbeitung und Analyse von Bildmaterial. lesen

Was ist inkrementelle Entwicklung?

Definition „Incremental Build Model“

Was ist inkrementelle Entwicklung?

Die inkrementelle Entwicklung ist ein strategisches Vorgehensmodell innerhalb der agilen Software-Entwicklung. Dabei wird zunächst das Gesamtsystem geplant, das einem modularen Aufbau folgt. Die Realisierung des Projektes erfolgt anschließend in Einzelschritten. lesen

Neue Tools und Dienste auf der Microsoft Build

Azure-Services, Container und Internet of Things

Neue Tools und Dienste auf der Microsoft Build

Auf der Entwicklerkonferenz MS Build liegt der diesjährige Schwerpunkt zwar auf Künstlicher Intelligenz. Trotzdem hat Microsoft auch andere Developer-Tools und -Dienste für die plattformübergreifende Entwicklung in allen Programmiersprachen angekündigt. lesen

Künstliche Intelligenz und Mixed Reality

Microsoft Build 2018

Künstliche Intelligenz und Mixed Reality

Auf der Microsoft-Entwicklerkonferenz Build 2018 zeigte Microsoft verschiedene Neuerungen zur Künstlichen Intelligenz und Mixed-Reality-Anwendungen. Entwickler können davon ab sofort profitieren. lesen

Einstieg in die Skills-Programmierung

Amazon Alexa für Developer, Teil 2

Einstieg in die Skills-Programmierung

Alexa-Skills herzustellen, ist nicht schwer. Man benötigt nur eine gute Idee und ein Amazon-Entwickler-Konto. Beides sollte nicht allzu schwer zu bekommen sein. Anschließend kann es direkt mit der Skills-Programmierung losgehen. lesen

Was zeichnet „gute“ Continuous Delivery aus?

Best Practices für mehr Software-Qualität

Was zeichnet „gute“ Continuous Delivery aus?

Wer die Prinzipien von Continuous Integration befolgt, ist bereit für Continuous Delivery, kurz CD. Doch ähnlich wie bei der kontinuierlichen Integration glauben viele Unternehmen, dass sie mit CD viel besser zurechtkommen, als es in der Realität der Fall ist. lesen

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45233624 / Definitionen)