Heute widmen wir uns der Geschichte des Begriffs, diskutieren die Herausforderungen der Implementierung von CI und stellen einige beliebte Werkzeuge vor, die dabei helfen.
/ Flickr / / / Фото изменено
Begriff
Continuous Integration (kontinuierliche Integration) ist ein Ansatz in der Anwendungsentwicklung, der häufige Builds des Projekts und das Testen des Codes umfasst.
Das Ziel ist es, den Integrationsprozess vorhersehbar zu gestalten und potenzielle Bugs und Fehler frühzeitig zu entdecken, um mehr Zeit für deren Behebung zu haben.
Der Begriff Continuous Integration wurde erstmals 1991 eingeführt. Er wurde vom Schöpfer der UML-Sprache, , geprägt. Der Ingenieur stellte das Konzept der CI als Teil seiner eigenen Entwicklungspraxis vor – . Er sah ein inkrementelles Verfeinern der Architektur bei der Gestaltung objektorientierter Systeme vor. Grady gab keine spezifischen Anforderungen für die kontinuierliche Integration an. Aber später in seinem Buch „“ erklärte er, dass das Ziel dieser Methode darin besteht, die Veröffentlichung von „internen Releases“ zu beschleunigen.
Geschichte
Im Jahr 1996 übernahmen die Schöpfer der Methode (XP) – und (Ron Jeffries). Kontinuierliche Integration ist eines der zwölf Grundprinzipien ihres Ansatzes. Die Gründer von XP präzisierten die Anforderungen an die CI-Methodologie und hoben hervor, dass das Projekt mehrmals täglich gebaut werden muss.
Anfang der 2000er Jahre begann einer der Gründer der Agile Alliance, die Methodik der kontinuierlichen Integration zu fördern. (Martin Fowler). Seine Experimente mit CI führten zur Entstehung des ersten Software-Tools in diesem Bereich – CruiseControl. Das Werkzeug wurde von Martins Kollegen Matthew Foemmel entwickelt.
Der Build-Zyklus im Tool ist als Daemon implementiert, der regelmäßig das Versionskontrollsystem auf Änderungen im Code prüft. Die Lösung kann auch heute noch heruntergeladen werden – sie ist unter einer BSD-ähnlichen Lizenz verfügbar.
Mit dem Aufkommen von CI-Software begannen immer mehr Unternehmen, diese Praktiken zu übernehmen. Laut einer Umfrage von Forrester [S.5 ] nutzten im Jahr 2009 86 % der fünfzig befragten Technologieunternehmen CI-Methoden oder führten sie ein.
Heutzutage wird Continuous Integration von Organisationen aus verschiedenen Branchen eingesetzt. Im Jahr 2018 führte ein großer Cloud-Anbieter eine Umfrage unter IT-Experten aus den Bereichen Dienstleistungen, Bildung und Finanzen durch. Von den sechs tausend Befragten gaben 58 % an, dass sie CI-Tools und -Prinzipien in ihrer Arbeit verwenden.
Wie es funktioniert
Die Grundlage der kontinuierlichen Integration bilden zwei Werkzeuge: ein Versionskontrollsystem und ein CI-Server. Letzterer kann sowohl ein physisches Gerät als auch eine virtuelle Maschine in der Cloud sein. Entwickler laden einmal oder mehrmals täglich neuen Code hoch. Der CI-Server kopiert diesen automatisch samt aller Abhängigkeiten und führt den Build durch. Anschließend startet er die Integrations- und Unit-Tests. Wenn die Tests erfolgreich sind, wird der Code von der CI-System bereitgestellt.
Der allgemeine Ablauf des Prozesses lässt sich wie folgt darstellen:

Die CI-Methodologie stellt eine Reihe von Anforderungen an die Entwickler:
- Probleme sofort beheben. Dieses Prinzip stammt aus dem Extreme Programming. Das Beheben von Bugs hat höchste Priorität für die Entwickler.
- Prozesse automatisieren. Entwickler und Manager müssen ständig nach Engpässen im Integrationsprozess suchen und diese beseitigen. Oft sind Integrationsthemen der Flaschenhals. Tests.
- Führen Sie Builds so häufig wie möglich durch. Einmal täglich, um die Arbeit des Teams zu synchronisieren.
Herausforderungen bei der Implementierung
Das erste Problem sind die hohen Betriebskosten. Selbst wenn ein Unternehmen Open-Source-CI-Tools nutzt (darüber werden wir später sprechen), muss es dennoch in die Unterstützung der Infrastruktur investieren. Eine Lösung könnten Cloud-Technologien sein.
Diese vereinfachen den Aufbau von unterschiedlich großen Computerkonfigurationen. Zudem zahlen Unternehmen nur für die tatsächlich genutzten Ressourcen, was hilft, die Infrastrukturkosten zu senken.
Laut Umfragen [стр.14 verbessert kontinuierliche Integration die Belastung der Mitarbeiter (zumindest in der Anfangszeit). Sie müssen sich in neue Werkzeuge einarbeiten, und nicht immer helfen die Kollegen bei der Schulung. Daher müssen sie sich mit neuen Frameworks und Services "im laufenden Betrieb" vertraut machen.
Die dritte Herausforderung sind Automatisierungsprobleme. Dies betrifft Organisationen mit großem Legacy-Code, der nicht mit automatisierten Tests abgedeckt ist. Das führt dazu, dass der Code einfach neu geschrieben wird, bevor CI vollständig implementiert wird.

/ Flickr / /
Wer verwendet
Zu den ersten, die die Vorteile der Methode erkannt haben, gehören IT-Giganten. Google verwendet kontinuierliche Integration seit Mitte der 2000er Jahre. CI wurde implementiert, um Verzögerungen in der Suchmaschinenleistung zu beheben. Kontinuierliche Integration hat geholfen, Probleme schnell zu identifizieren und zu beheben. Heute nutzen alle Abteilungen des IT-Giganten CI.
Kontinuierliche Integration hilft auch kleinen Unternehmen, und CI-Tools werden auch von Finanz- und Gesundheitsorganisationen verwendet. Beispielsweise haben die CI-Dienste von Morningstar geholfen, Sicherheitslücken 70 % schneller zu beheben. Die medizinische Plattform Philips Healthcare konnte die Tests von Updates verdoppeln.
Werkzeuge
Hier sind einige beliebte CI-Tools:
- — eines der beliebtesten CI-Systeme. Es unterstützt über tausend Plugins zur Integration mit verschiedenen VCS, Cloud-Plattformen und anderen Diensten. Jenkins wird auch von uns in 1cloud verwendet: ein Werkzeug . Es überprüft regelmäßig den Git-Zweig, der für Tests vorgesehen ist.
- — ein Python-Framework zur Erstellung eigener kontinuierlicher Integrationsprozesse. Die anfängliche Einrichtung des Werkzeugs ist ziemlich komplex, jedoch wird dies durch umfangreiche Anpassungsmöglichkeiten ausgeglichen. Die Benutzer heben die geringe Ressourcenintensität des Frameworks hervor.
- — ein Server von Pivotal, der Docker-Container verwendet. Concourse CI integriert sich mit beliebigen Werkzeugen und Versionskontrollsystemen. Entwickler stellen fest, dass das System für Unternehmen jeder Größe geeignet ist.
- — ein Werkzeug, das in das Versionskontrollsystem GitLab integriert ist. Der Dienst arbeitet in der Cloud und verwendet YAML-Dateien für die Konfiguration. Wie Concourse verwendet auch GitLab CI Docker-Container ein, die helfen, verschiedene Prozesse voneinander zu isolieren.
- — eine cloudbasierte CI-Server-Lösung, die mit GitHub, GitLab und BitBucket interagiert. Die Plattform benötigt keine umfangreiche Erstkonfiguration – standardisierte CI-Prozesse sind bei Codeship bereits vorinstalliert. Für kleine Projekte (bis zu 100 Builds pro Monat) und Open-Source-Projekte ist Codeship kostenlos nutzbar.
Materialien aus unserem Unternehmensblog:
Quelle: habr.com
