Phasen einer Lieferung •Artefakte aus Quellen erstellen (Build) •Artefakte in Zielumgebung verteilen (Deployment) •Artefakte in Zielumgebung aktivieren (Installation) ---------------- •Bei der Abfolge gibt es Unterschiede. So werden für die Auslieferung eines Windowsprogrammes obige drei Phasen in der angegebenen Reihenfolge durchlaufen. •Im Gegensatz dazu wird eine JavaEE Anwendung zunächst auf dem Adminserver installiert und nachfolgend auf die Managed Server verteilt (auch wenn hier generell vom Deployment gesprochen wird und keine Unterscheidung zur Installation erfolgt).
Eigenschaften der Build Phase •Aus den Quellen werden Artefakte erstellt •Die Artefakte sollen Umgebungsunabhängig sein (damit sie ohne neuen Build in alle Zielumgebungen verteilt werden können) •Die Artefakte müssen noch nicht lauffähig sein. Sie müssen aber installierbar sein. •Die Artefakte können Platzhalter zur Umgebungsspezifischen Installation enthalten z.B. für IP Adressen
Eigenschaften der Deployment Phase •Die Artefakte werden in die Zielumgebung transportiert •Die in den Artefakten enthaltenen Platzhalter werden durch Umgebungsspezifische Werte ersetzt. •In der Zielumgebung müssen evtl. weitere Aktionen ausgeführt werden (z.B. entpacken, kopieren, Dateirechte ändern) •Für den Transport müssen Login und Passwörter bereitgestellt werden •Der Installationsprozess in der Zielumgebung ist zu starten (falls gewünscht)
Eigenschaften der Installations Phase • Diese Phase wird in der Zielumgebung durchgeführt • Es werden evtl. Sonderberechtigungen (z.B. root Rechte) benötigt • Möglicherweise muss ein Login untertützt werden um Root Rechte zu erlangen • Alle Artefakte die zur Installation benötigt werden müssen vorliegen • Manchmal werden fehlende Artefakte automatisch nachgeladen (eher selten) • Die Artefakte werden in der Zielumgebung an ihre konkreten Orte platziert, mit Rechten versehen und gestartet • Nach erfolgreicher Installation werden nicht benötigte Artefakte wieder entfernt • Es wird ein Prozess zur Deinstallation der Artefakte eingerichtet • Es wird ein Prozess zur Aktualisierung der Artefakte eingerichtet (für Hotfixes oder Updates) • Es wird ein Prozess zur Betriebsüberwachung eingerichtet • Es müssen verschiedenste Systeme konfiguriert werden (Server, Datenbanken, Clients, ...) • In der Regel müssen auch Datenbankskripte ausgeführt werden • Manchmal müssen auch Nutzerkonten im OS oder in der Anwendung erstellt werden
Anforderungen an den Build Prozess • Der Build erfolgt ausschlieslich auf selbstverwaltbaren Quellen • Die Quellen müssen versioniert vorliegen • Der Build muss selbst versioniert erfolgen • Alle für den Build benötigten Artefakte (auch implizite Abhängigkeiten) müssen als eigene Quellen (z.B. eingecheckte jar Files) verfügbar sein • Der Build muss reproduzierbar sein (auch nach Jahren) • Alle Artefakte müssen versioniert vorliegen und versioniert verwaltet werden • Die Versionen des Buildsystems, der Buildskipte, der Anwendung und Legacy Systeme (Datenbanken, externe Systeme) müssen zu einander passen. • Die Build Skripte ggf. das ganze Buildsystem sind als Teil der Quellen einer Anwendung zu betrachten
Anforderungen an das Liefersystem •Die Beschreibung des Lieferprozesses muss einfach und mit wenig Text möglich sein •Der Lieferprozess muss sich willkürlich in Phasen (Deliverycycle) unterteilen lassen •Alle Logik wird durch ausgelagerte, generische Artefakte (Worker) bereitgestellt (Plugins, Ant-Tasks, ...) •Worker müssen konfigurierbar sein •Worker müssen versioniert und als eigene Quellen vorliegen •Worker müssen sich willkürlich den Phasen des Deliverycycle zurordnen (n:m Beziehungen möglich) lassen
Artefaktarten Es ist wichtig die folgenden Artefakte zu unterscheiden: •Artefakte die nur für das Funktionieren des Liefersystems benötigt werden (Worker und Liefersystem) •Artefakte die nur für das Endprodukt (Programm) benötigt werden •Artefakte die nur den Ablauf der Lieferprozesse beschreiben (Lieferskripte) •Artefakte die nur Informationen über die Zielumgebung enthalten (Wertetabellen für Platzhalterersetzung) •Artefakte die dem Reporting und der Archivierung der Lieferungen dienen