CI/CD ist eine Methode, die Continuous Integration (CI) mit Continuous Deployment bzw. Delivery (CD) kombiniert. Dieser Vorgang automatisiert und optimiert den Prozess der Softwarebereitstellung und sorgt für eine Verbesserung der Qualität und Effizienz der Softwareentwicklung.
In der CI/CD-Pipeline übernimmt zunächst die Continuous Integration (CI) den Bau und die Prüfung des Codes. Das können Nutzer:innen manuell starten oder von Sourcecode-Verwaltungstools automatisiert ausführen lassen. Dabei wird der Code durch einen Merge in die Versionsverwaltung eingebracht, was dann die CI-Phase auslöst.
Diese führt automatisierte Tests und Qualitätsprüfungen (wie cppcheck oder Linting) durch. Die Ergebnisse der CI sind typischerweise Artefakte, Testprotokolle und Qualitätsberichte. Das dokumentiert den Status der Software. Bei erfolgreichem Abschluss der Countinous Integration bereitet die Continuous Delivery (CD) die Bereitstellung der neuen Version vor. In einem vollautomatisierten Prozess veröffentlicht die Continuous Deployment-Pipeline diese Version direkt.
Ziele
1. Erhöhte Pruduktivität
Automatisierte Prozesse reduzieren den manuellen Aufwand und lassen Entwickler sich auf das Schreiben von Code konzentrieren.
2. Verbesserte Codequalität
Automatisierte Tests und kontinuierliche Integration erkennen Fehler frühzeitig. Zur Qualitätskontrolle gehören statische und dynamische Analysen (z. B. mit cppcheck, lint, valgrind) sowie Code-Coverage-Berechnungen und Metriken wie Codezeilenanzahl oder Dokumentationsqualität (z. B. mit doxygen). Diese Maßnahmen in der CI unterstützen die kontinuierliche Verbesserung der Codequalität.
3. Schnellere Auslieferung
Neue Funktionen und Updates können schneller und häufiger bereitgestellt werden.
4. Reduzierte Risiken
Automatisierte Tests und Rollbacks verringern das Risiko von Fehlern in der Produktionsumgebung.
Tools
Wichtige Tools für CI/CD umfassen:
- Jenkins
- GitLab CI/CD
- CircleCI
- Travis CI
- Bamboo
- Azure DevOps
- Spinnaker
- Argo CD
- Octopus Deploy