Kontinuierliche Integration

Aus LOMSO
(Weitergeleitet von Kontinuierlichen Integration)
Zur Navigation springen Zur Suche springen
Du bist hier : Wiki home -> Software -> Programmieren -> Kontinuierliche Integration



Definition

  • Regelmäßiges, vollständiges Neubilden und Testen einer Anwendung
  • Entwickler checkt frühzeitig seine Änderungen in ein Sourcecodemanagementsystem (SCM) ein
  • Neubilden des Systems nach Änderungen im Versionsverwaltungssystem
  • Erweiterung des Nightly Builds

Vorteile

  • Integrationsprobleme werden laufend entdeckt und behoben
  • Frühe Warnungen bei nicht zusammenpassenden Bestandteilen
  • Sofortige Unit-Tetsts entdecken Fehler
  • Permanente Verfügbarkeit eines lauffähigen Standes für Demo- oder Testzwecke

Best Practices von Martin Fowler

  • Den Buildprozess automatisieren
  • Jeder checkt tägliche seine Codeänderungen ein
  • Jeder Commit soll den Buildvorgang auf dem Integrationsserver anstoßen
  • Mache den Buildprozess schnell
  • Mache das erzeugte ausführbare Softwareprodukt den Nutzern zugänglich
  • Gestalte den Buildprozess transparent

Quelle: Martin Fowler: Continuous Integration

Systeme

Es gibt eine Vielzahl an freien und kommerziellen Systemen, die meist webbasiert sind. Im Folgenden wird auf das freie System Jenkins näher eingegangen.

Jenkins

  • Webbasiertes System zur kontinuierlichen Integration
  • In der Programmiersprache Java erstellt und läuft somit auf Systemen, auf dem es ein Java Development Kit (JDK) gibt
  • Ursprünglich unter dem Namen Hudson von Kohsuke Kawaguchi entwickelt
  • Zahlreiche Erweiterungen als Plugins verfügbar
  • Lizenz
    • Icons: Creative Commons Attribution Share-Alike Lizenz
    • Rest der Software: MIT-Lizenz
  • Homepage: Jenkins
  • Beispiel: CI-Server von Jenkins

Betriebssysteme

Derzeit gibt es Pakete für folgende Betriebssysteme:

  • Windows
  • Ubuntu/Debian
  • Red Hat/Fedora/CentOS
  • Mac OS X
  • openSUSE
  • FreeBSD
  • OpenBSD
  • Solaris/OpenIndiana
  • Gentoo

Programmiersprachen

Die folgenden Programmiersprachen können über Plugins integriert werden (Auswahl). Sollte für eine Sprache kein Plugin vorhanden sein, kann der Compiler über ein Shell- bzw. Batchskript ausgeführt werden.

  • Java
  • C/C++
  • C#

Buildwerkzeuge

Die folgenden Buildwerkzeuge stellen lediglich eine kleine Auswahl dar:

  • Ant
  • Maven
  • Grandle
  • NAnt
  • Shell-Skripte
  • Windows Batchfiles

Versionsverwaltung

Die folgenden Versionsverwaltungssysteme stellen lediglich eine kleine Auswahl dar:

  • CVS
  • Subversion
  • Git
  • Mercurial
  • Bazaar