Hier finden Sie eine umfassende Definition des CI/CD-Konzepts, einer Grundsäule der modernen DevOps-Kultur, strukturiert für Ihr Feld „Lange Definition”.
Umfassende Definition von CI/CD
CI/CD ist eine Methode zur Softwareverteilung, die auf der Automatisierung jedes einzelnen Entwicklungsschritts basiert. Das Akronym setzt sich aus zwei untrennbaren Teilen zusammen:Continuous Integration (CI) und Continuous Delivery/Deployment (CD).
Das Ziel besteht darin, Entwicklern die Möglichkeit zu geben, Updates regelmäßig, zuverlässig und ohne riskante manuelle Eingriffe zu veröffentlichen.
1. CI: Kontinuierliche Integration (Continuous Integration)
Wenn ein Entwickler den Code ändert, „pusht“ er ihn in ein gemeinsames Repository (wie GitHub). Die CI wird dann automatisch ausgelöst:
- Build: Kompilierung des Codes, um sicherzustellen, dass keine Syntaxfehler vorliegen.
- Unit-Tests: Durchführung automatisierter Tests, um sicherzustellen, dass neue Änderungen die bestehenden Funktionen nicht beeinträchtigen.
- Validierung: Überprüfung der Codequalität und der Einhaltung von Sicherheitsstandards.
2. CD: Kontinuierliche Bereitstellung und Implementierung (Continuous Delivery/Deployment)
Sobald der Code in der CI-Phase validiert wurde, übernimmt der CD-Teil:
- Continuous Delivery: Der Code wird automatisch für die Bereitstellung vorbereitet, aber die Inbetriebnahme erfordert eine abschließende manuelle Validierung.
- Continuous Deployment: Jede Änderung, die die Tests besteht, wird sofort in die Produktion übernommen, ohne dass ein manueller Eingriff erforderlich ist.
Warum ist das eine Revolution?
Vor CI/CD wurden Updates jeden Monat in „großen Wellen“ durchgeführt, mit zahlreichen Bugs. Mit CI/CD:
- Risikominderung: Fehler werden innerhalb von Minuten statt Wochen entdeckt.
- Schnelligkeit: Neue Funktionen stehen den Benutzern schneller zur Verfügung.
- Seelenfrieden: Freitagabend-Bereitstellungen sind kein Stressfaktor mehr, da alles automatisiert und getestet wird.
Technologien und Werkzeuge
Um eine CI/CD-Pipeline einzurichten, werden in der Regel folgende Tools verwendet:
- Pipeline-Tools: GitHub Actions, GitLab CI, Jenkins oder CircleCI.
- Containerisierung: Docker (um sicherzustellen, dass der Code überall gleich läuft).
- Orchestrierung: Kubernetes.