Build-Automatisierung - Build automation
Software-Entwicklung |
---|
Build - Automatisierung ist der Prozess , die Schaffung einer der Automatisierung Software - Build und die damit verbundenen Prozesse , einschließlich: Kompilieren Computer - Quellcode in Binärcode , Verpackungs Binärcode und Ausführen von automatisierten Tests .
Überblick
In der Vergangenheit wurde die Build-Automatisierung durch Makefiles erreicht . Heute gibt es zwei allgemeine Kategorien von Werkzeugen:
- Dienstprogramm zur Build-Automatisierung
- Dies umfasst Dienstprogramme wie Make , Rake , CMake , MSBuild , Ant , Maven oder Gradle (Java) usw. Ihr Hauptzweck besteht darin, Build-Artefakte durch Aktivitäten wie das Kompilieren und Verknüpfen von Quellcode zu generieren.
- Build-Automation-Server
- Hierbei handelt es sich um allgemeine webbasierte Tools, mit denen Dienstprogramme zur Build-Automatisierung geplant oder ausgelöst ausgeführt werden. Ein Continuous Integration Server ist eine Art Build-Automation-Server.
Je nach Automatisierungsgrad ist folgende Klassifizierung möglich:
- Makefile - Level
- Make-basierte Tools
- Nicht Make-basierte Tools
- Erstellen Sie Tools zur Erstellung von Skripten (oder Makefiles)
- Tools für die kontinuierliche Integration
- Konfigurationsmanagement- Tools
- Meta-Build-Tools oder Paketmanager
- Andere
Eine Softwareliste für jede Software finden Sie in der Liste der Build-Automatisierungssoftware .
Dienstprogramme zur Build-Automatisierung
Build-Automation-Dienstprogramme ermöglichen die Automatisierung einfacher, wiederholbarer Aufgaben. Bei Verwendung des Tools wird berechnet, wie das Ziel erreicht wird, indem Aufgaben in der richtigen, spezifischen Reihenfolge ausgeführt und jede Aufgabe ausgeführt werden. Die beiden Unterschiede zwischen Build-Tools sind aufgabenorientiert und produktorientiert. Aufgabenorientierte Tools beschreiben die Abhängigkeit von Netzwerken in Bezug auf eine bestimmte festgelegte Aufgabe, und produktorientierte Tools beschreiben Dinge in Bezug auf die von ihnen generierten Produkte.
Build-Automation-Server
Obwohl Build-Server lange vor Servern mit kontinuierlicher Integration existierten, sind sie im Allgemeinen gleichbedeutend mit Servern mit kontinuierlicher Integration. Ein Build-Server kann jedoch auch in ein ARA- Tool oder ALM- Tool integriert werden.
Servertypen
- On-Demand-Automatisierung, z. B. ein Benutzer, der ein Skript in der Befehlszeile ausführt
- Geplante Automatisierung, z. B. ein Server für die kontinuierliche Integration , auf dem ein nächtlicher Build ausgeführt wird
- Ausgelöste Automatisierung, z. B. ein Server für die kontinuierliche Integration, der bei jedem Commit für ein Versionskontrollsystem einen Build ausführt .
Verteilte Build-Automatisierung
Die Automatisierung wird durch die Verwendung einer Kompilierungsfarm für die verteilte Kompilierung oder die Ausführung des Dienstprogrammschritts erreicht. Der verteilte Erstellungsprozess muss über Maschinenintelligenz verfügen, um die Quellcode-Abhängigkeiten zum Ausführen des verteilten Builds zu verstehen.
Beziehung zu kontinuierlicher Lieferung und kontinuierlicher Integration
Die Build-Automatisierung wird als erster Schritt zur Implementierung einer Kultur der kontinuierlichen Bereitstellung und von DevOps angesehen . Die Build-Automatisierung in Kombination mit kontinuierlicher Integration , Bereitstellung , Automatisierung von Anwendungsversionen und vielen anderen Prozessen hilft einem Unternehmen, Best Practices für die Softwarebereitstellung zu etablieren.
Vorteile
Zu den Vorteilen der Build-Automatisierung für Softwareentwicklungsprojekte gehören:
- Eine notwendige Voraussetzung für die kontinuierliche Integration und kontinuierliche Prüfung
- Produktqualität verbessern
- Beschleunigen Sie die Kompilierungs- und Linkverarbeitung
- Beseitigen Sie redundante Aufgaben
- Minimieren Sie "schlechte Builds"
- Beseitigen Sie Abhängigkeiten von Schlüsselpersonal
- Haben Sie eine Geschichte von Builds und Releases, um Probleme zu untersuchen
- Sparen Sie Zeit und Geld - aus den oben genannten Gründen.
Siehe auch
- Application-Release-Automatisierung (ARA)
- Kontinuierliche Konfigurationsautomatisierung (CCA)
- Kontinuierliche Integration (CI)
- Kontinuierliche Lieferung (CD)
- Kontinuierliche Prüfung
- DevOps
- Liste der Build-Automatisierungssoftware
- Produktfamilien-Engineering
- Release Engineering (RE)
- Software Configuration Management (SCM)
- Unit Testing