Nach dem Artikel “Was ist eigentlich Abstraktion?” möchte ich heute die Reihe der Erläuterungen von Fachbegriffen aus der Softwareentwicklung fortsetzen. Das heutige Thema, was ist Continuous Integration (dt. Kontinuierliche Integration) beschreibt einen Prozess der Software Entwicklung, in dem in regelmäßigen Abständen das komplette System neu gebuilded wird. Die Grundidee der Kontinuierlichen Integration ist einfach.
- Sobald ein Entwickler (-team) Code Änderungen in die Versionsverwaltung eincheckt, wird das komplette System neu gebildet und automatisch getestet.
- Sind alle Tests erfolgreich durchlaufen, werden die vorgenommenen Änderungen and die nächste Stufe weitergegeben. Falls die Tests scheitern, wird ein Rollback durchgeführt und dem Entwickler (-team) zur Korrektur vorgelegt.
Damit man Continuous Integration in seinem Projekt nutzen kann müssen einige Rahmenbedingungen erfüllt sein. Continuous Integration basiert auf der festen Annahme, dass die Quellen des Projekts in einem Versionsverwaltungssystem (z.B. CVS / Subversion) verwaltet werden und diese nach Änderungen auch zeitnah wieder dort eingestellt werden. Des Weiteren wird davon ausgegangen das nur lauffähige Blöcke von Änderungen eingecheckt werden.
Eine einfachere Alternative, und häufig auch die Vorstufe zur Kontinuierlichen Integration. ist der Nightly Build. Beim Nightly Build wird jede Nacht die aktuelle Version aus dem Versionsverwaltungssystem geholt und auf diesem Stand ein Gesamtsystem gebaut. Sofern möglich wird auch noch eine automatisch Installation auf einem Zielsystem durchgeführt und eine Anschalttest (Smoke Test) durchgeführt.
Zusammenfassend sind die Vorteile der Continuous Integration
- die frühe Warnung bei inkompatiblen Bestandteilen der Anwendung
- die konstante Verfügbarkeit eine lauffähigen Systems für Demo-, Test- oder Vertriebszwecke
- die sofortige Reaktion des Systems auf das Einchecken unvollständigen oder Fehlerhaften Codes
- die Integrationsprobleme werden laufend entdeckt und behoben - Fehler fallen schon während der Entwicklung und nicht kurz vor Meilensteinen auf
- mit Hilfe von Unit-Tests lassen sich Fehler schnell entdecken
[...] einem meiner letzten Artikel habe ich schon ja über das Konzept der Continuous Integration berichtet, heute möchte ich ein Tool vorstellen welches dies nahezu perfektioniert. [...]