Kontinuierliche Integration
Zur Navigation springen
Zur Suche springen
Du bist hier : | {{#youAreHere: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