Kontinuierliche Integration

Bei der kontinuierlichen Integration (CI) wird mehrmals täglich ein sauberer Build des Systems erstellt.

Bei der kontinuierlichen Integration (CI) wird mehrmals täglich ein sauberer Build des Systems erstellt, normalerweise mit einem Tool wie CruiseControl, das Ant und verschiedene Quellcodeverwaltungssysteme verwendet. Agile-Teams konfigurieren CI normalerweise so, dass es automatisierte Kompilierung, Unit-Test-Ausführung und Versionsverwaltungsintegration umfasst. Manchmal umfasst CI auch die automatische Durchführung automatisierter Abnahmetests, wie sie beispielsweise mit FitNesse entwickelt wurden. Tatsächlich bedeutet CI, dass der Build fast immer sauber ist.

Kontinuierliche Integrationstechnik, Tools und Richtlinien

Es gibt mehrere spezifische Praktiken, die CI offenbar erfordert, um gut zu funktionieren. Auf seiner WebsiteMartin Fowler liefert eine lange, detaillierte Beschreibung des Produkts dessen, was kontinuierliche Integration ist und wie man sie zum Funktionieren bringt.

Eine beliebte CI-Regel besagt, dass Programmierer am Ende des Tages niemals etwas unintegriert zurücklassen. Der Aufbau sollte niemals die Nacht in einem kaputten Zustand verbringen. Dadurch wird den Programmierteams eine gewisse Disziplin bei der Aufgabenplanung auferlegt. Wenn außerdem die Regel des Teams lautet, dass derjenige, der den Build beim Einchecken kaputt macht, ihn erneut reparieren muss, besteht ein natürlicher Anreiz, den Code tagsüber häufig einzuchecken.

Vorteile der kontinuierlichen Integration

Wenn CI gut funktioniert, trägt es dazu bei, dass der Code robust genug bleibt, sodass Kunden und andere Stakeholder jederzeit mit dem Code experimentieren können. Dadurch wird der Ablauf der Entwicklungsarbeit insgesamt beschleunigt; Wie Fowler betont, fühlt es sich ganz anders an. Es fördert außerdem mehr Feedback zwischen Programmierern und Kunden, was dem Team hilft, die Dinge vor Ablauf der Iterationsfristen in Ordnung zu bringen. Wie Refactoring funktioniert auch die kontinuierliche Integration gut, wenn Sie über eine umfassende Suite automatisierter Komponententests verfügen, die sicherstellen, dass Sie keinen fehlerhaften Code übernehmen.

Geschicktes CI bedeutet, dass die Integration nie ein Problem darstellt, da Ihre Arbeit nur geringfügige Abweichungen von der Codebasis widerspiegelt. Wenn sich das Team regelmäßig mit kleineren Abweichungen auseinandersetzen muss, muss es sich nie mit wirklich beängstigenden Abweichungen auseinandersetzen. Sie erhalten außerdem die Gelegenheit, unterschiedliche Designansätze noch am Tag ihrer Entstehung zu diskutieren, da die Integration an diesem Tag die Aufmerksamkeit des gesamten Teams auf sie lenkt.