Das Forschungs- und Entwicklungsteam der BBC (British Broadcasting Corporation) arbeitet seit mehreren Jahren an der IP-Produktion und entwickelt ein Modell für End-to-End-Broadcasting, das es einem Live-Studio ermöglicht, vollständig über IP-Netzwerke zu laufen. In diesem Zeitraum wurden mehrere Softwareanwendungen und Bibliotheken entwickelt, um Techniken zu prototypisieren, das Verständnis weiter zu vertiefen und neue Standards zu implementieren. Dafür nutzen sie Continuous Integration zusammen mit einer Reihe von Tools, die die Continuous Delivery ihrer Software unterstützen. Warum ist Continuous Integration eine bevorzugte Option für große Organisationen wie die BBC?

Eine Softwareentwicklungsmethodik wie Continuous Integration (CI) kann für eine effiziente Softwarebereitstellung von größter Bedeutung sein. Drupal-basierte Projekte können durch die Implementierung von CI erheblich profitieren, was zu besserer Teamarbeit und effektiveren Softwareentwicklungsprozessen führt.
Lesen Sie mehr über die Implementierung von Continuous Delivery und Continuous Deployment mit Drupal.
Geht vielen Vorläufern von Agile voraus
CI ist älter als viele der Vorläufer der agilen Entwicklungsmethodik. Grady Booch, ein amerikanischer Software-Ingenieur, prägte den Begriff „Continuous Integration“ 1991 durch die Booch-Methode (eine Methode, die in der objektorientierten Analyse und im Design verwendet wird).
Booch schreibt in seinem Buch „Object-Oriented Analysis and Design with Applications“:
Die Anforderungen des Mikroprozesses diktieren, dass wesentlich mehr interne Releases an das Entwicklungsteam erfolgen werden, wobei nur wenige ausführbare Releases an externe Parteien übergeben werden. Diese internen Releases stellen eine Art kontinuierliche Integration des Systems dar und dienen dazu, den Mikroprozess zum Abschluss zu bringen.
Prinzipien der Continuous Integration

Eine Softwareentwicklungsmethodik wie Continuous Integration ermöglicht es den Teammitgliedern, ihre Arbeit häufig zu integrieren. Dabei integriert jedes Teammitglied mindestens täglich, was zu mehreren Integrationen pro Tag führt. Jede Integration wird durch einen automatisierten Build (der den Test beinhaltet) überprüft, um Integrationsfehler schneller zu erkennen.
„Continuous Integration beseitigt keine Fehler, aber es macht sie dramatisch einfacher zu finden und zu beheben.“ — Martin Fowler, Chief Scientist, ThoughtWorks
Entwickler können mithilfe eines Versionskontrollsystems wie Git häufig Commits in ein gemeinsames Repository durchführen. Sie können vor jedem Commit lokale Unit-Tests für ihren Code ausführen, als zusätzliche Verifizierungsebene vor der Integration. Ein CI-Dienst erstellt und führt automatisch Unit-Tests für die neuen Codeänderungen aus, um Fehler sofort zu identifizieren.
Mit Continuous Delivery werden Codeänderungen automatisch erstellt, getestet und in die Produktion überführt. Continuous Delivery erweitert Continuous Integration, indem alle Codeänderungen nach der Build-Phase in eine Testumgebung und/oder Produktionsumgebung bereitgestellt werden.
Schlüsselpraktiken für eine effektive Continuous Integration
- Einheitliches Quellcode-Repository: Ein geeignetes Quellcode-Managementsystem sollte vorhanden sein.
- Build-Automatisierung: Automatisierte Umgebungen für Builds sind ein gängiges Merkmal von Systemen, die sicherstellen, dass Sie Ihr System mit einem einzigen Befehl erstellen und starten können.
- Selbsttest: Automatisierte Tests im Build-Prozess können helfen, Fehler schnell und effektiv zu erkennen.
- Tägliche Commits: Durch tägliche Commits in den Hauptzweig können Entwickler ihren Code korrekt erstellen, einschließlich des Bestehens der Build-Tests.
- Integrationsmaschine: Regelmäßige Builds sollten auf einer Integrationsmaschine stattfinden, und der Commit sollte nur dann als abgeschlossen betrachtet werden, wenn dieser Integrations-Build erfolgreich ist.
- Sofortige Behebung fehlerhafter Builds: Ein wesentlicher Bestandteil eines kontinuierlichen Builds ist, dass ein fehlgeschlagener Hauptzweig-Build sofort behoben werden sollte.
- Schnelles Feedback: Es ist von größter Bedeutung, den Build schnell zu halten und schnelles Feedback zu geben.
- Testumgebung: Immer in einem Klon der Produktionsumgebung testen.
- Auffinden der neuesten ausführbaren Datei: Jeder, der an einem Softwareprojekt beteiligt ist, sollte die neueste ausführbare Datei leicht erhalten und für Demos oder explorative Tests ausführen können.
- Systemstatus einsehen: Jeder sollte in der Lage sein, den Systemstatus und die vorgenommenen Änderungen einzusehen.
- Bereitstellungsautomatisierung: Sie sollten Skripte haben, die es Ihnen ermöglichen, die Anwendung einfach in jeder Umgebung bereitzustellen.
Continuous Integration Workflow
- Zuerst checken Entwickler Code in ihre privaten Arbeitsbereiche aus.
- Nach der Durchführung die Änderungen in das Repository committen.
- Der CI-Server überwacht das Repository und checkt Änderungen aus, sobald sie auftreten.
- Der CI-Server erstellt das System, führt Unit- und Integrationstests aus und stellt deploybare Artefakte zum Testen bereit.
- Der CI-Server weist der gerade erstellten Codeversion ein Build-Label zu und informiert das Team über den erfolgreichen Build.
- Der CI-Server benachrichtigt die Teammitglieder, wenn der Build oder die Tests fehlschlagen.
- Die Teammitglieder beheben das Problem sofort.
- Das Team integriert und testet während des gesamten Projekts kontinuierlich.
Verantwortlichkeiten der Teammitglieder
- Häufig einchecken
- Keinen fehlerhaften, ungetesteten Code einchecken oder wenn der Build fehlerhaft ist.
- Nach dem Einchecken nicht nach Hause gehen, bevor das System erfolgreich gebaut wurde.
Continuous Integration Tools
Ein Entwicklungsteam nutzt CI-Software-Tools, um Teile des Anwendungs-Builds zu automatisieren und eine Dokumentationsspur zu erstellen. Im Folgenden sind Beispiele für CI-Pipeline-Automatisierungstools aufgeführt:
- CircleCI ist eine Continuous-Integration-Plattform. Wenn sie mit einer Drupal-Website verbunden ist, benachrichtigen Änderungen in der Versionskontrolle in Code-Repositories wie GitHub CircleCI, den Build der Anwendung zu starten und vordefinierte Testsuiten auszuführen.
- Travis CI ähnelt CircleCI und integriert sich mit GitHub, Bitbucket und anderen Anwendungen. Es erstellt Anwendungs-Builds und führt Testsuiten aus, wenn Codeänderungen gepusht werden.
- Jenkins ist ein Open-Source-Automatisierungsserver, der im Gegensatz zu Plattformdiensten wie CircleCI und Travis CI vom Benutzer installiert und verwaltet wird. Er ist mit Plugins erweiterbar und funktioniert gut mit Git. Er ermöglicht eine breite Palette von Konfigurationen und Anpassungen.
- Das Open-Source-Repository und die Plattform GitLab können Unit- und Integrationstests auf mehreren Maschinen ausführen und Builds auf zahlreiche Maschinen aufteilen, um die Ausführungszeiten zu verkürzen.
- JetBrains TeamCity ist ein Integrations- und Management-Server, der es Entwicklern ermöglicht, Code zu testen, bevor sie Änderungen an einer Codebasis committen. Es verfügt über Build Grids, die es Entwicklern ermöglichen, mehrere Tests und Builds für verschiedene Plattformen und Umgebungen auszuführen.
Vorteile der Continuous Integration

Beseitigt den blinden Fleck
Eine aufgeschobene Integration ist problematisch, da es eine mühsame Aufgabe ist, vorherzusagen, wie lange ein Projekt dauern wird oder, schlimmer noch, wie weit man im Prozess fortgeschritten ist. So sehr, dass man sich an einem der kritischen Punkte eines Projekts in einem blinden Fleck befindet. Einer der bedeutendsten Vorteile von Continuous Integration ist das minimierte Risiko. Mit CI gibt es keine lange Integration, und der blinde Fleck wird vollständig beseitigt. Sie wissen, wo Sie stehen, was funktioniert und was nicht, und welche ausstehenden Fehler Ihr System noch hat.
Einfache Fehlererkennung
CI beseitigt Fehler nicht vollständig, macht es aber einfacher, sie schneller zu erkennen. Projekte mit CI weisen tendenziell dramatisch weniger Fehler auf, sowohl in der Produktion als auch im Prozess. Das Ausmaß dieses Vorteils ist direkt proportional zur Qualität Ihrer Testsuite.
Häufige Bereitstellung
CI fördert die häufige Bereitstellung, wodurch Ihre Benutzer neue Funktionen schneller erhalten, schnelleres Feedback zu diesen Funktionen geben und stärker am Entwicklungszyklus mitwirken können.
Continuous Integration für Drupal
Auf der DrupalCon Dublin 2016 gab es eine Präsentation, die zeigte, wie man die Jenkins 2 Pipelines nutzen kann, um Continuous Integration/Deployment/Delivery für Drupal-Websites zu implementieren, unter Berücksichtigung von Prinzipien wie Infrastructure as Code, Configuration as Code, DRY (Don’t Repeat Yourself) und dem Open/Closed-Prinzip (aus den SOLID-Prinzipien).
Der in der Präsentation gezeigte Prozess erforderte das Pushen eines Commits in ein selbst gehostetes (Gitlab) oder privates GitHub-Repository. Er umfasste das Erstellen des Doc-Roots aus verschiedenen Quellen, Bereitstellungsverfahren, automatische Tests auf Servern, und alles wurde in derselben Pipeline als separate Stages konfiguriert.
Es zeigte die automatische Generierung von Deploy-Pipelines für jeden konfigurierten Branch/Status wie Entwicklung, Staging oder Produktion. Es wurden verschiedene Ansätze zur Steuerung der Codestruktur genutzt, wie z.B. ein Composer-basierter Workflow und eine „all-code-in-repo“-Lösung im selben Doc-Root. Automatische Überprüfung, dass der Code vor Beginn der Drush-Bereitstellungsverfahren und Tests an den Server geliefert wurde.
Das Projektteam kann eigene Deploy-Skripte haben
Es wurde ein universelles Deploy-Skript verwendet, das für jedes Projekt nützlich ist. Zusätzliche projektspezifische Deploy-Skripte – DRY (oder Überschreiben) des grundlegenden Deploy-Skripts – wurden genutzt, was nützlich sein könnte, wenn Sie diesen Teil der Verantwortung an ein anderes Team delegieren. Sie können steuern, welche Drush-Befehle oder Befehlsoptionen für bestimmte Projekte verwendet werden können, d.h. das Projektteam kann eigene Deploy-Skripte haben.
Die Konfiguration als Code wurde sowohl auf der Jenkins-Seite als auch auf der Drupal-Seite durchgeführt. Auf der Jenkins-Seite wurden alle Jenkins-Jobs (Pipelines) als Code in Git gespeichert und bei Codeänderungen mithilfe von Job DSL neu generiert. Auf der Drupal-Seite wurde jede Konfigurationsänderung im Code vorgenommen und dann während der Code-Deployments auf den Produktionsservern verarbeitet.
Es zeigte die automatische Erstellung von URLs und Datenbanken auf der Hosting-Plattform basierend auf einem Multisite-Setup. Es zeigte automatisierte Backups vor Code-Deployments, kopierte ganze Websites innerhalb des Doc-Roots oder zwischen verschiedenen Doc-Roots mit einem Klick und fügte benutzerdefinierte Aktionen hinzu, um zusätzliche projektspezifische Funktionalitäten anzubieten.
Markttrends
The Forrester Wave™: Continuous Integration Tools, Q3 2017 beschrieb die 10 wichtigsten Anbieter und wie sie im Vergleich abschneiden.

Ein Bericht von Markets and Markets besagt, dass der Markt für CI-Tools voraussichtlich von 483,7 Millionen USD im Jahr 2018 auf 1139,3 Millionen USD bis 2023 wachsen wird, bei einer durchschnittlichen jährlichen Wachstumsrate (CAGR) von 18,7 % während des Prognosezeitraums.
Eine Studie von Data Bridge Market Research besagt, dass zu den wichtigsten Akteuren auf dem globalen Markt für Continuous Integration (CI)-Tools unter anderem Atlassian (Australien), IBM (USA), Microsoft (USA), Micro Focus (Großbritannien), CA Technologies (USA), Cloudbees (USA), AWS (USA), Puppet (Oregon), Red Hat (USA), CA Technologies (USA), Oracle (USA), Micro Focus (Großbritannien), SmartBear (USA), Jetbrains (Tschechische Republik), CircleCI (USA), Shippable (USA), Electric Cloud (USA), V-Soft Technologies (Südafrika), BuildKite (Australien), TravisCI (Deutschland), AutoRABIT (USA), AppVeyor (Kanada), Drone.io (USA), Rendered Text (Serbien), Bitrise (Ungarn), Nevercode (Großbritannien) und PHPCI (Belgien) gehören.
Fazit
Die Softwareentwicklung kann durch die Integration von Continuous Integration drastisch verbessert werden, was zu einer besseren Teamzusammenarbeit, reduziertem Risiko und schnellerer Bereitstellung führt. Drupal-basierte Projekte können die Vorteile von CI-Tools nutzen. Da Drupal ein wichtiger Treiber digitaler Innovation ist, ist die Implementierung von Continuous Integration in Drupal-Projekten praktikabel.
OpenSense Labs verfügt über einen Pool von Drupal-Expert:innen, die eine treibende Kraft sind, wenn es darum geht, die digitalen Transformationsziele von Unternehmen mit ihrem Leistungsangebot zu verwirklichen.
Kontaktieren Sie uns unter [email protected], um zu erfahren, wie Sie Continuous Integration für Drupal-Projekte nutzen können.
Abonnieren
Verwandte Blogs
Zurück von der DrupalCon Atlanta 2025: Ein Meilenstein für OpenSense Labs

„Fit. Schnell. Für die Ewigkeit gebaut.“ Das war nicht nur ein Slogan, sondern die Denkweise, mit der wir zur DrupalCon…
Erklärbare KI-Tools: SHAPs Stärke in der KI

Wissen Sie, was erklärbare KI-Tools sind? Erklärbare KI-Tools sind Programme, die zeigen, wie eine KI ihre Entscheidungen…
KI-Chatbots: Präzision und Persönlichkeit in Perfektion

In der Welt der künstlichen Intelligenz ist die Entwicklung eines KI-Chatbots, der nicht nur akkurate Informationen liefert…