|
|
Kontinuierliche Integration
Kontinuierliche Integration (auch: fortlaufende- oder permanente Integration, en. Continuous Integration) ist ein Begriff aus der Software-Entwicklung, der den Prozess des regelmĂ€Ăigen, vollstĂ€ndigen Neubildens und Testens einer Anwendung beschreibt. Obwohl dieses Konzept Ă€lter ist, wird es hĂ€ufig mit Extreme Programming in Verbindung gebracht.
Die Idee der fortlaufenden Integration ist einfach:
- Sobald ein Entwickler(-team) Ănderungen in die Versionsverwaltung eincheckt, wird das Gesamtsystem neu gebaut und automatisch getestet.
- Falls alle Tests erfolgreich durchlaufen, werden die vorgenommenen Ănderungen an die nĂ€chste Stufe gegeben. Falls die Tests scheitern, werden die Ănderungen zurĂŒckgenommen (Rollback) und dem Entwickler(-team) zur Korrektur vorgelegt.
SpÀtestens seit das Konzept der permanenten Integration von Kent Beck im Rahmen von Extreme Programming populÀr gemacht wurde, ist der Begriff an sich bekannt, die Implikationen sind allerdings oft nicht so transparent.
Permanente Integration basiert auf der festen Annahme, dass das Projekt seine Quellen in einem Versionsverwaltungssystem verwaltet und diese auch zeitnah nach Bearbeitung wieder dort einstellt.
Weiterhin wird davon ausgegangen, dass immer funktional vollstĂ€ndige Blöcke von Ănderungen eingecheckt werden.
Auch wenn Systeme wie CruiseControl oder Anthill es sehr viel leichter machen, eine permanente Integration umzusetzen, so ist doch in vielen Unternehmen und Projekten keine Umgebung vorhanden, die ein solches Arbeiten unterstĂŒtzt.
Die einfachere Alternative â und hĂ€ufig die Vorstufe zur permanenten Integration â ist der Nightly Build (nĂ€chtlicher Erstellungsprozess), bei dem jede Nacht die aktuellen Versionen aus dem Versionsverwaltungssystem geholt werden und auf diesem Stand ein Gesamtsystem gebaut wird. Sofern möglich wird auch noch eine Installation in der Zielumgebung vorgenommen (Deployment) und ein Minimaltest (Anschalttest, vgl. Smoke testing) durchgefĂŒhrt.
Die EinfĂŒhrung permanenter Integration oder ersatzweise eines tĂ€glichen Builds ist ein geeigneter Weg, die QualitĂ€t zu steigern.
Die Vorteile der fortlaufenden Integration sind:
- Integrations-Probleme werden laufend entdeckt und behoben (gefixt) â nicht erst kurz vor einem Meilenstein
- frĂŒhe Warnungen bei nicht zusammenpassenden Bestandteilen
- sofortige Unit-Tests entdecken Fehler schnell
- konstante VerfĂŒgbarkeit eines lauffĂ€higen Standes fĂŒr Demo-, Test- oder Vertriebszwecke
- Die sofortige Reaktion des Systems auf das Einchecken fehlerhaften oder unvollstĂ€ndigen Codes âerziehtâ die Entwickler im positiven Sinne zu einem verantwortlicheren Umgang und kĂŒrzeren Checkin-Intervallen.
Eine Liste verfĂŒgbarer Werkzeuge zur UnterstĂŒtzung dieses Prozesses:
- AnthillPro â ein kommerzielles Werkzeug von Urbancode. Zusammen mit CruiseControl ist Anthill eines der fĂŒhrendes Werkzeuge in diesem Segment.
- Anthill ist die frei verfĂŒgbare Variante.
- LuntBuild â ein Werkzeug fĂŒr Build und Management.
- Bamboo â ein kommerzieller Server fĂŒr fortlaufende Integration von Atlassian
- BuildBot â ein in Python/Twisted implementiertes System fĂŒr kontinuierliche Erstellungsprozesse
- Build Forge â ein Framework der IBM-Tochtergesellschaft Rational Software, das die Build- und Release-Prozesse automatisieren soll
- CABIE â eine in Perl geschriebene Open-Source-Erstellungs- und Integrationsumgebung, die mit CVS, Subversion and Perforce ein Server fĂŒr fortlaufende Integration, der Apache Maven und Apache Ant unterstĂŒtzt
- Continuum - ein Subprojekt des Apache Maven Projekts. UnterstĂŒtzt Maven 1, Maven 2, Ant und Shell-Skripte.
- CruiseControl â ein Java-basiertes Framework fĂŒr kontinuierliche Erstellungsprozesse
- CruiseControl.NET â ein .NET-basiertes Framework fĂŒr einen kontinuierlichen Erstellungsprozess
- CruiseControl.rb â ein Ruby-basiertes Framework fĂŒr einen kontinuierlichen Erstellungsprozess
- DamageControl â ein weiterer Continuous-Integration-Server fĂŒr Ruby
- Apache Gump â ein Werkzeug fĂŒr fortlaufende Integration der Apache Software Foundation
- Hudson â mit MIT-Lizenz, geschrieben in Java, lĂ€uft in Servlet-Container, unterstĂŒtzt CVS, Subversion, Ant, Maven, und Shell-Skripte
- Tinderbox â ein auf Mozilla basierendes Produkt
- Teamcity â ein Werkzeug von JetBrains, Web-basiert, vertrĂ€glich mit den integrierten Entwicklungsumgebungen IntelliJ IDEA, Eclipse und Microsoft Visual Studio
- Xinc â Continuous-Integration-Server fĂŒr PHP-Anwendungen
- Manfred Lange: Fortlaufende Integration. XP Exchange, 14. Januar 2002 (online ; Stand: 13. April 2007).
|