CI/CD

CI/CD (Continuous Integration / Continuous Deployment) bezeichnet die automatisierte Kette aus Testen, Bauen und Ausliefern von Software bei jeder Codeänderung.

Kurz erklärt

Continuous Integration (CI) beschreibt die Praxis, Codeänderungen häufig in ein gemeinsames Git-Repository zu übernehmen und dabei automatisiert zu testen und zu bauen, statt Änderungen erst nach langer Zeit isoliert zusammenzuführen. Continuous Deployment/Delivery (CD) setzt dort an, wo CI aufhört: Ein erfolgreich getesteter Build wird automatisiert - oder nach einer letzten manuellen Freigabe - direkt auf einem Server oder in einer Produktivumgebung ausgerollt. Eine typische CI/CD-Pipeline reagiert dabei auf ein Ereignis wie einen neuen Commit (häufig technisch über einen Webhook ausgelöst), führt automatisierte Tests aus, baut die Anwendung - oft als Docker-Image - und liefert sie anschließend aus.

Beispiel

Ein Entwickler pusht eine Codeänderung in ein Git-Repository. Automatisch startet eine Pipeline, die den Code testet, ein Docker-Image baut und - sofern alle Tests erfolgreich waren - dieses Image auf dem Produktivserver ausrollt, ganz ohne manuellen Eingriff nach dem ursprünglichen Push.

Warum ist das relevant?

CI/CD reduziert das Risiko und den manuellen Aufwand von Software-Auslieferungen erheblich: Fehler werden durch automatisierte Tests früh erkannt, Deployments laufen reproduzierbar und nachvollziehbar statt manuell und fehleranfällig ab, und neue Funktionen können deutlich häufiger und in kleineren, risikoärmeren Schritten ausgeliefert werden.

Häufige Missverständnisse

Continuous Deployment und Continuous Delivery werden oft synonym verwendet, meinen aber nicht dasselbe: Bei Continuous Delivery ist jede Änderung jederzeit auslieferbar, das tatsächliche Ausrollen erfolgt aber erst nach einer bewussten, meist manuellen Freigabe. Bei Continuous Deployment entfällt dieser manuelle Schritt vollständig - jede erfolgreich getestete Änderung geht automatisch in Produktion. Auch ersetzt eine CI/CD-Pipeline keine gründliche Testabdeckung: Automatisiertes Ausliefern fehlerhaften, unzureichend getesteten Codes liefert Fehler lediglich schneller und zuverlässiger aus.

Weiterführende Inhalte