www.wikidata.de-de.nina.az
Kontinuierliche Integration auch fortlaufende oder permanente Integration englisch continuous integration CI ist ein Begriff aus der Software Entwicklung der den Prozess des fortlaufenden Zusammenfugens von Komponenten zu einer Anwendung beschreibt Das Ziel der kontinuierlichen Integration ist die Steigerung der Softwarequalitat Typische Aktionen sind das Ubersetzen und Linken der Anwendungsteile prinzipiell konnen aber auch beliebige andere Operationen zur Erzeugung abgeleiteter Informationen durchgefuhrt werden Ublicherweise wird dafur nicht nur das Gesamtsystem neu gebaut sondern es werden auch automatisierte Tests durchgefuhrt und Softwaremetriken zur Messung der Softwarequalitat erstellt Der gesamte Vorgang wird automatisch ausgelost durch Einchecken in die Versionsverwaltung Eine Vorstufe der kontinuierlichen Integration ist der Nightly Build nachtlicher Erstellungsprozess In der Praxis trifft man auch auf kontinuierliche Integration gepaart mit einem Nightly Build um die Vorteile beider Systeme zu kombinieren In der Methode DevOps wird diese Automatisierung auch Pipeline genannt da die einzelnen Schritte sequentiell abgearbeitet werden Die Pipeline ermoglicht hier die Entwicklungsgeschwindigkeit zu erhohen denn schon nach wenigen Minuten erhalt der Entwickler Ruckmeldung ob die Qualitatsanspruche erreicht wurden oder nicht Eine Weiterentwicklung der kontinuierlichen Integration stellt die Continuous Delivery CD dar Dabei wird in bestimmten Zeitabstanden oder bei Erreichen einer bestimmten Qualitatsmetrik eine neue Version der Software ausgeliefert Inhaltsverzeichnis 1 Grundsatze 2 Vorteile 3 Software 4 Weblinks 5 EinzelnachweiseGrundsatze BearbeitenSpatestens seit das Konzept der permanenten Integration von Kent Beck im Rahmen von Extreme Programming popular gemacht wurde ist der Begriff der kontinuierlichen Integration an sich bekannt fur die erfolgreiche Einfuhrung mussen allerdings einige Grundsatze vgl Continuous Integration 1 von Martin Fowler befolgt werden Gemeinsame Codebasis Um innerhalb einer Arbeitsgruppe sinnvoll integrieren zu konnen muss eine Versionsverwaltung existieren in die alle Entwickler ihre Anderungen kontinuierlich integrieren konnen Automatisierte Ubersetzung Jede Integration muss einheitlich definierte Tests wie statische Code Uberprufungen durchlaufen bevor die Anderungen integriert werden Dafur ist eine automatisierte Ubersetzung notwendig Um Testergebnisse von den Arbeitsumgebungen unabhangig zu machen empfiehlt sich der Einsatz von separaten Test Umgebungen Damit konnen auf diesen Rechnern auch gezielt Verfahren implementiert werden um die Testlaufzeit zu minimieren Kontinuierliche Test Entwicklung Jede Anderung sollte moglichst zeitgleich mit einem dazugehorigen Test entwickelt werden beispielsweise mittels testgetriebener Entwicklung Mit Hilfe von kontrollflussorientierten Testverfahren Analyse der Code Uberdeckung engl Code Coverage Analysis kann diese Vorgehensweise dokumentiert und kontrolliert werden Haufige Integration Jeder Entwickler sollte seine Anderungen so oft wie moglich in die gemeinsame Code Basis integrieren Mit kurzen Integrations Intervallen reduziert man das Risiko fehlschlagender Integrationen und sichert gleichzeitig den Arbeitsfortschritt der Entwickler in der gemeinsamen Code Basis Datensicherung engl backup Integration in den Hauptbranch Jeder Entwickler sollte seine Anderungen in den Hauptbranch des Produktes integrieren wo dann automatisch ein Build und Testzyklus gestartet wird Dieser Build wird der kontinuierliche Integrationsbuild genannt Kurze Testzyklen Der Test Zyklus vor der Integration sollte kurz gehalten sein um haufige Integrationen zu fordern Mit steigenden Qualitatsanforderungen fur die einzelnen Integrationen steigt auch die Laufzeit zur Ausfuhrung der Test Zyklen Die Menge der vor der Integration durchgefuhrten Tests muss sorgfaltig abgewogen werden weniger wichtige Tests werden dann nur nach der Integration durchgefuhrt Gespiegelte Produktionsumgebung Die Anderungen sollten in einem Abbild der realen Produktionsumgebung getestet werden Einfacher Zugriff Auch Nicht Entwickler brauchen einfachen Zugriff auf die Ergebnisse der Software Entwicklung Dies mussen nicht notwendigerweise Quellen sein sondern kann beispielsweise das in das Testsystem gespielte Produkt fur Tester die Qualitats Zahlen fur Qualitats Verantwortliche die Dokumentation oder ein fertig paketiertes Abbild fur Release Manager sein Automatisiertes Reporting Die Ergebnisse der Integrationen mussen leicht zugreifbar sein Sowohl Entwickler als auch andere Beteiligte mussen leicht Informationen daruber bekommen konnen wann die letzte erfolgreiche Integration ausgefuhrt wurde welche Anderungen seit der letzten Lieferung eingebracht wurden und welche Qualitat die Version hat Automatisierte Verteilung Jede Version sollte leicht in eine Produktionsumgebung oder ein Abbild derselbigen uberfuhrt werden konnen Hierfur sollte die Softwareverteilung automatisiert sein Kontinuierliche Integration kann auf jedem Rechner mit Zugang zum Quellcode durchgefuhrt werden Es ist insbesondere moglich die Integration gleichzeitig auf unterschiedlichen Systemen etwa verschiedenen Betriebssystemen durchzufuhren Vorteile BearbeitenIntegrations Probleme werden laufend entdeckt und behoben gefixt nicht erst kurz vor einem Meilenstein Fruhe Warnungen bei nicht zusammenpassenden Bestandteilen Sofortige Unittests entdecken Fehler zeitnah Im Idealfall kann so beispielsweise direkt bemerkt werden wenn ein Commit einen Fehler einfuhrt Standige Verfugbarkeit eines lauffahigen Standes fur Demo Test oder Vertriebszwecke Die sofortige Reaktion des Systems auf das Einchecken eines fehlerhaften oder unvollstandigen Codes erzieht die Entwickler im positiven Sinne zu einem verantwortlicheren Umgang und kurzeren Checkin Intervallen Der Merge Aufwand wird immer grosser je langer man mit der Integration wartet Software BearbeitenBeispielhafte Werkzeuge fur kontinuierliche Integration Bamboo ein kommerzieller Server fur fortlaufende Integration von Atlassian Rational Build Forge ein Framework der IBM Tochtergesellschaft Rational Software das die Build und Release Prozesse automatisieren soll Continuum ein Subprojekt des Apache Maven Projekts Unterstutzt Maven 1 Maven 2 Ant und Shell Skripte CruiseControl ein Java basiertes Framework fur kontinuierliche Erstellungsprozesse Derivate auch fur das Net Framework und Ruby GitLab mit MIT Lizenz unterstutzt Git und Shell Skripte Hudson mit MIT Lizenz geschrieben in Java lauft in Servlet Container unterstutzt CVS Subversion Ant Maven und Shell Skripte Jenkins mit MIT Lizenz geschrieben in Java lauft standalone oder in Servlet Container unterstutzt CVS Apache Subversion Git ClearCase Ant Maven Perforce und Shell Skripte Hudson Fork Team Foundation Server eine Plattform fur kollaborative Softwareprojekte auf Basis von Microsoft SQL Server und Windows SharePoint Services Teamcity ein Werkzeug von JetBrains webbasiert vertraglich mit den integrierten Entwicklungsumgebungen IntelliJ IDEA Eclipse und Microsoft Visual Studio Travis CI gehostetes und verteiltes Tool fur GitHub Projekte Weblinks BearbeitenMulti stage Continuous Integration von Damon Poole englisch Continuous integration von Martin Fowler eine Einfuhrung englisch Continuous Integration im Portland Pattern Repository englisch Continuous Integration Server Feature Matrix Ubersicht uber diverse Werkzeuge englisch Continuous Integration The Cornerstone of a Great Shop von Jared Richardson Einfuhrung englisch Continuous Integration on a Dollar a Day von James Shore Anleitung englisch A Recipe for Build Maintainability and Reusability von Jay Flowers englisch Einzelnachweise Bearbeiten FOWLER Martin Continuous Integration englisch Abgerufen von https de wikipedia org w index php title Kontinuierliche Integration amp oldid 228771477