Continuous Integration

Continuous Integration – Quelle und Entwicklung
Die erste Phase der CI/CD-Reise besteht darin, hinsichtlich der Continuous Integration zu reifen. Sie sollten sicherstellen, dass alle Entwickler ihren Code regelmäßig in ein zentrales Repository (das z. B. in CodeCommit oder GitHub gehostet wird) übergeben und alle Änderungen in einem Release-Zweig für die Anwendung zusammenführen. Kein Entwickler sollte über isolierten Code verfügen. Wenn ein Funktionszweig für einen bestimmten Zeitraum benötigt wird, sollte er durch möglichst häufige Zusammenführungen aus dem Upstream auf dem neuesten Stand gehalten werden. Häufige Commits und Zusammenführungen mit abgeschlossenen Arbeitsschritten werden dem Team empfohlen, um eine Routine zu entwickeln, und werden durch den Prozess gefördert. Ein Entwickler, der Code früh und häufig zusammenführt, muss später wahrscheinlich weniger Integrationsprobleme beheben.
Sie sollten Entwickler außerdem dazu anhalten, so früh wie möglich Einheitentests für ihre Anwendungen zu erstellen und diese Tests durchzuführen, bevor sie den Code in das zentrale Repository übertragen. Fehler, die in den Anfangsphasen der Softwareentwicklung erkannt werden, sind mit weniger Zeit- und Kostenaufwand zu beheben.
Wenn der Code in einen Zweig in einem Quellcode-Repository übertragen wird, sendet eine Workflow-Engine, die diesen Zweig überwacht, einen Befehl an ein Entwickler-Tool, um den Code zu erstellen und die Einheitentests in einer kontrollierten Umgebung durchzuführen. Der Entwicklungsprozess sollte entsprechend dimensioniert sein, um alle Aktivitäten zu verarbeiten, einschließlich Übertragungen und Tests, die während der Commit-Phase stattfinden können, um ein schnelles Feedback zu erhalten. In dieser Phase können auch andere Qualitätsprüfungen wie die Abdeckung von Einheitentests, Stilprüfung und statische Analyse durchgeführt werden. Schließlich erstellt das Entwickler-Tool einen oder mehrere binäre Builds und andere Artefakte wie Bilder, Stylesheets und Dokumente für die Anwendung.