Continuous Integration ist eine Praxis der Softwareentwicklung, bei der Änderungen an einem Programm häufig und automatisiert zu einer gemeinsamen Codebasis zusammengeführt, gebaut und getestet werden. Ziel ist es, Integrationsprobleme früh zu erkennen, statt sie erst am Ende eines Projekts zu entdecken.
Auch genannt: CI
Arbeiten mehrere Personen gleichzeitig an einem Softwareprojekt, entstehen laufend neue Codeänderungen. Werden diese erst nach Wochen oder Monaten zusammengeführt, treten Konflikte und Fehler oft gebündelt und schwer nachvollziehbar auf. Continuous Integration begegnet dem, indem jede Änderung möglichst sofort in die gemeinsame Codebasis eingespielt und automatisch überprüft wird.
Bei Continuous Integration lädt jede Entwicklerin und jeder Entwickler Änderungen regelmäßig, oft mehrmals täglich, in ein gemeinsames Versionsverwaltungssystem hoch. Ein automatisiertes System löst daraufhin einen Build aus: Der Code wird kompiliert oder zusammengestellt und anschließend automatisiert getestet. Schlägt ein Build oder ein Test fehl, wird das Team umgehend informiert, sodass der Fehler behoben werden kann, solange die Änderung noch klein und nachvollziehbar ist. Dieses enge Zusammenspiel aus häufigem Zusammenführen und automatisierter Prüfung unterscheidet Continuous Integration von seltenen, manuell koordinierten Integrationsschritten.
Lädt eine Entwicklerin eine neue Funktion in das gemeinsame Repository hoch, startet automatisch ein Build- und Testlauf. Bestehen alle automatisierten Tests, gilt die Änderung als integriert und steht dem restlichen Team unmittelbar zur Verfügung. Schlägt ein Test fehl, erhält das Team sofort eine Rückmeldung, statt den Fehler erst bei einer späteren, größeren Zusammenführung zu entdecken.
Continuous Integration wird in Softwareprojekten unterschiedlicher Größe eingesetzt, um Qualität und Geschwindigkeit der Entwicklung zu verbessern. Sie ist häufig Ausgangspunkt für weiterführende automatisierte Abläufe, etwa die automatisierte Bereitstellung fertiger Software, und wird oft mit agilen Entwicklungsmethoden kombiniert, die auf kurze Entwicklungszyklen und schnelles Feedback setzen.
Continuous Integration ersetzt keine inhaltliche Codeprüfung durch Menschen: Automatisierte Tests decken nur das ab, wofür sie geschrieben wurden, fachliche oder gestalterische Fehler bleiben oft unentdeckt. Ein häufiges Missverständnis ist außerdem, Continuous Integration mit der automatisierten Auslieferung von Software gleichzusetzen – tatsächlich beschreibt der Begriff zunächst nur das Zusammenführen und Testen von Code, nicht dessen Bereitstellung für Nutzende.
Nicht verwechseln mit Git: Es ist das Versionsverwaltungssystem, in dem Codeänderungen gespeichert werden, während Continuous Integration der darauf aufbauende automatisierte Prozess ist. Ebenfalls abzugrenzen ist Softwaretest: Er bezeichnet die Prüfaktivität selbst, die im Rahmen von Continuous Integration automatisiert ausgeführt wird. Auch Workflow-Automatisierung ist ein eigenständiger Begriff: Sie betrifft die Automatisierung fachlicher Geschäftsprozesse, nicht die technische Integration von Quellcode.