Continuous Integration (CI) in der Softwareentwicklung
Im Rahmen von Continuous Integration werden in der Softwareentwicklung einzelne Komponenten einer Software kontinuierlich zusammengefügt (Buildprozess). Üblicherweise geschieht dies jedes Mal, wenn Änderungen in der Versionsverwaltung eingecheckt werden.
Das Ziel von Continuous Integration ist es, die Qualität in der Softwareentwicklung zu verbessern und potentielle Fehler schnellstmöglich zu entdecken.
Neben dem einfachen Zusammenfügen (Build) der Software sollten auch noch automatische Tests oder Qualitätsanalysen als Teil der CI-Pipeline implementiert werden.
Continuous Integration basiert auf einige Grundsätzen, welche von Martin Fowler aufgestellt wurden. Diese umfassen u.a.:
- Automatisierte Builds
- Versionsverwaltung (Revisionskontrolle)
- Regelmäßige Commits (bestenfalls täglich)
- Schnelle Build-Zeit
- Testen in gespiegelter Umgebung
- Sichtbare Ergebnisse der Builds
- Automatisches Deployment (als Vorstufe zum Continuous Deployment)
Die Umstellung auf CI kann zunächst einen erheblichen Aufwand für Unternehmen bedeuten. Allerdings bietet CI nicht zu unterschätzende Vorteile wie bspw. keine langwierige Integration mit schwer abschätzbarer Timeline oder eine schnellere Behebung von Bugs, da Code-Änderungen in kleinen Schritten eingebaut werden, sodass CI durchaus in Erwägung gezogen werden sollte.
Eine Umstellung kann und sollte daher schrittweise erfolgen, beginnend mit einem automatischen Build eingebettet in das Versionskontrollsystem, erweitert durch automatischen Tests, usw.
Abgrenzung zu Continuous Deployment und Continuous Delivery
Continuous Integration bildet die Grundlage für die weiterführenden Ansätze Continuous Delivery und Continuous Deployment.
Continuous Integration mit dem Cloudogu EcoSystem
Das Cloudogu EcoSystem bringt alles mit, was man für eine Continuous Integration Pipeline benötigt:
- Versionsverwaltungs Server (SCM-Manager)
- Build Server (Jenkins)
- Code Analyse Tool (SonarQube)
- Artefakt Repository Server (Nexus Repository)