Hintergrund: Funktionsweise des kontinuierlichen Integrationsprozesses

Heute wenden wir uns der Geschichte des Begriffs zu, diskutieren die Schwierigkeiten bei der Implementierung von CI und stellen einige beliebte Tools zur Verfügung, mit denen Sie damit arbeiten können.


/ Flickr / Altug Karakoc / CC BY / Foto geändert

Laufzeit


Kontinuierliche Integration - Ein Ansatz zur Anwendungsentwicklung, der häufiges Zusammenstellen des Projekts und Codetests umfasst.

Ziel ist es, den Integrationsprozess vorhersehbar zu machen und potenzielle Fehler frühzeitig zu erkennen, damit mehr Zeit für deren Behebung bleibt.

Der Begriff Continuous Integration tauchte erstmals 1991 auf. Es wurde vom Schöpfer der UML-Sprache, Grady Booch, eingeführt. Der Ingenieur führte das CI-Konzept als Teil seiner eigenen Entwicklungspraxis ein - der Butch-Methode . Es implizierte eine schrittweise Verfeinerung der Architektur beim Entwurf objektorientierter Systeme. Grady beschrieb keine Anforderungen für eine kontinuierliche Integration. Später in seinem Buch " Objektorientierte Analyse und Design mit Anwendungen " sagte er jedoch, dass die Aufgabe der Methodik darin bestehe, die Veröffentlichung von "internen Releases" zu beschleunigen.

Die Geschichte


1996 wurde CI von den Machern der Extreme Programming Methodology (XP) - Kent Beck und Ron Jeffries - übernommen . Die kontinuierliche Integration ist zu einem der zwölf Grundprinzipien ihres Ansatzes geworden. Die Gründer von XP klärten die Anforderungen an die CI-Methodik und stellten fest, dass das Projekt mehrmals täglich zusammengestellt werden muss.

In den frühen 2000er Jahren begann Martin Fowler, einer der Gründer der Agile Alliance, die kontinuierliche Integrationsmethode zu fördern. Seine Experimente mit CI führten zum ersten Software-Tool der Branche - CruiseControl. Das Dienstprogramm wurde von einem Kollegen von Martin - Matthew Fommel (Matthew Foemmel) erstellt.
Der Erstellungszyklus im Tool wird als Daemon implementiert, der das Versionskontrollsystem regelmäßig auf Änderungen in der Codebasis überprüft. Die Lösung kann heute heruntergeladen werden - sie wird unter einer BSD-ähnlichen Lizenz vertrieben.
Mit dem Aufkommen von Software für CI begannen immer mehr Unternehmen, diese Praxis zu übernehmen. Laut einer Forrester-Studie [S. 5 des Berichts ] verwendeten oder implementierten 2009 86% der fünfzig befragten Technologieunternehmen CI-Methoden.

Die kontinuierliche Integration wird heute von Organisationen aus einer Vielzahl von Branchen praktiziert. Im Jahr 2018 führte ein großer Cloud-Anbieter eine Umfrage unter IT-Spezialisten unter Unternehmen aus den Bereichen Dienstleistungen, Bildung und Finanzen durch. Von den sechstausend Befragten gaben 58% an, CI-Tools und -Prinzipien in ihrer Arbeit zu verwenden.

Wie funktioniert es?


Die Basis der kontinuierlichen Integration sind zwei Tools - ein Versionskontrollsystem und ein CI-Server. Letzteres kann entweder ein physisches Gerät oder eine virtuelle Maschine in einer Cloud-Umgebung sein. Entwickler laden ein- oder mehrmals täglich neuen Code hoch. Der CI-Server kopiert es automatisch mit allen Abhängigkeiten und führt die Assembly durch. Nach dem Start werden Integrations- und Komponententests gestartet. Wenn die Tests erfolgreich sind, stellt das CI-System den Code bereit.

Das allgemeine Schema des Prozesses kann wie folgt dargestellt werden:



Die CI-Methodik stellt eine Reihe von Anforderungen an Entwickler:

  • Beheben Sie Probleme sofort. Dieses Prinzip kam von extremer Programmierung zu CI. Fehlerkorrekturen haben für Entwickler oberste Priorität.
  • Prozesse automatisieren. Entwickler und Manager sollten ständig nach Engpässen im Integrationsprozess suchen und diese beseitigen. Zum Beispiel ist das Testen oft der „Engpass“ der Integration.
  • Baue so oft wie möglich. Einmal am Tag, um die Teamarbeit zu synchronisieren.

Implementierungsschwierigkeiten


Das erste Problem sind die hohen Betriebskosten. Selbst wenn ein Unternehmen offene CI-Tools verwendet (über die wir später sprechen werden), muss es dennoch Geld für die Unterstützung der Infrastruktur ausgeben. Cloud-Technologie kann jedoch die Lösung sein.

Sie vereinfachen die Montage von Computerkonfigurationen mit mehreren Maßstäben. Außerdem zahlen Unternehmen nur für die verwendeten Ressourcen, was zur Einsparung von Infrastruktur beiträgt.

Umfragen [S. 14 des Artikels ] zufolge erhöht eine kontinuierliche Integration die Belastung der Mitarbeiter des Unternehmens (zumindest zum ersten Mal). Sie müssen neue Werkzeuge lernen, und Kollegen helfen nicht immer beim Training. Daher müssen Sie sich unterwegs mit neuen Frameworks und Diensten auseinandersetzen.

Die dritte Schwierigkeit sind Probleme mit der Automatisierung. Unternehmen mit einer großen Menge an Legacy-Code, der nicht durch automatisierte Tests abgedeckt wird, sind damit konfrontiert. Dies führt dazu, dass der Code vor der vollständigen Implementierung von CI einfach neu geschrieben wird.


/ Flickr / theilr / CC BY-SA

Wer benutzt


Einer der ersten Vorteile der Methodik wurde von IT-Giganten gewürdigt. Google nutzt seit Mitte der 2000er Jahre die kontinuierliche Integration. CI implementiert, um das Problem mit Verzögerungen in der Suchmaschine zu lösen. Die kontinuierliche Integration hat dazu beigetragen, Probleme schnell zu identifizieren und zu beheben. Jetzt wird CI von allen Abteilungen des IT-Riesen verwendet.

Die kontinuierliche Integration hilft auch kleinen Unternehmen, und CI-Tools werden auch von Finanz- und medizinischen Organisationen verwendet. Bei Morningstar beispielsweise haben kontinuierliche Integrationsdienste dazu beigetragen, Schwachstellen um 70% schneller zu beheben. Die medizinische Plattform von Philips Healthcare konnte die Geschwindigkeit des Testens von Updates verdoppeln.

Die Werkzeuge


Hier sind einige beliebte Tools für CI:

  • Jenkins ist eines der beliebtesten CI-Systeme. Es unterstützt mehr als tausend Plugins für die Integration in verschiedene VCS, Cloud-Plattformen und andere Dienste. Wir verwenden Jenkins auch in 1cloud: Das Tool ist in unserem DevOps-System enthalten . Er überprüft regelmäßig den Git-Zweig zum Testen.
  • Buildbot ist ein Python-Framework zum Schreiben eigener kontinuierlicher Integrationsprozesse. Die anfängliche Einrichtung des Tools ist recht kompliziert, wird jedoch durch die vielfältigen Anpassungsmöglichkeiten ausgeglichen. Unter den Vorteilen des Frameworks unterscheiden Benutzer seine geringe Ressourcenintensität.
  • Concourse CI ist ein Server von Pivotal, der Docker-Container verwendet. Concourse CI lässt sich in alle Tools und Versionskontrollsysteme integrieren. Die Entwickler stellen fest, dass das System für die Arbeit in Unternehmen jeder Größe geeignet ist.
  • Gitlab CI ist ein Tool, das in das GitLab-Versionskontrollsystem integriert ist. Der Dienst wird in der Cloud ausgeführt und verwendet YAML-Dateien zur Konfiguration. Wie Concourse verwendet Gitlab CI Docker-Container, mit denen verschiedene Prozesse voneinander isoliert werden können.
  • Codeship ist ein Cloud-basierter CI-Server, der mit GitHub, GitLab und BitBucket zusammenarbeitet. Die Plattform erfordert keine lange Ersteinrichtung - standardmäßige vordefinierte CI-Prozesse sind in Codeship verfügbar. Für kleine (bis zu 100 Builds pro Monat) und Open Source-Projekte ist Codeship kostenlos verfügbar.

Materialien aus unserem Unternehmensblog:

Source: https://habr.com/ru/post/de447090/


All Articles