Referenz: Wie der Continuous-Integration-Prozess funktioniert

Heute werfen wir einen Blick auf die Geschichte des Begriffs, diskutieren die Schwierigkeiten bei der Implementierung von CI und stellen einige beliebte Tools vor, die Ihnen bei der Arbeit damit helfen.

Referenz: Wie der Continuous-Integration-Prozess funktioniert
/flickr/ Altug Karakoc / CC BY / Foto geändert

Begriff

Continuous Integration ist ein Ansatz zur Anwendungsentwicklung, der häufige Projekterstellungen und Codetests umfasst.

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

Der Begriff Continuous Integration tauchte erstmals 1991 auf. Es wurde vom Erfinder der UML-Sprache eingeführt Grady Butch (Grady Booch). Der Ingenieur führte das Konzept von CI als Teil seiner eigenen Entwicklungspraxis ein – Booch-Methode. Dies erforderte eine schrittweise Verfeinerung der Architektur beim Entwurf objektorientierter Systeme. Gradi beschrieb keine Anforderungen für die kontinuierliche Integration. Aber später in seinem Buch „Objektorientierte Analyse und Design mit Anwendungen„Er sagte, dass das Ziel der Methodik darin bestehe, die Veröffentlichung „interner Veröffentlichungen“ zu beschleunigen.

Geschichte

Im Jahr 1996 wurde CI von den Entwicklern der Methodik übernommen extremes Programmieren (XP) - Kent Beck (Kent Beck) und Ron Jeffries (Ron Jeffries). Kontinuierliche Integration wurde zu einem der zwölf Schlüsselprinzipien ihres Ansatzes. Die Gründer von XP klärten die Anforderungen an die CI-Methodik und stellten fest, dass das Projekt mehrmals täglich erstellt werden muss.

In den frühen 2000er Jahren begann einer der Gründer der Agile Alliance, die Methodik der kontinuierlichen Integration zu fördern Martin Fowler (Martin Fowler). Seine Experimente mit CI führten zum ersten Softwaretool in diesem Bereich – CruiseControl. Das Dienstprogramm wurde von Martins Kollegen Matthew Foemmel erstellt.

Der Build-Zyklus im Tool ist als Daemon implementiert, der das Versionskontrollsystem regelmäßig auf Änderungen in der Codebasis überprüft. Die Lösung kann heute heruntergeladen werden – it vertrieben von unter einer BSD-ähnlichen Lizenz.

Mit dem Aufkommen von Software für CI begannen immer mehr Unternehmen, diese Praxis zu übernehmen. Laut Forrester-Studie [Seite 5 berichten] haben im Jahr 2009 86 % der fünfzig befragten Technologieunternehmen CI-Methoden eingesetzt oder implementiert.

Heutzutage wird die Praxis der kontinuierlichen Integration von Organisationen aus den unterschiedlichsten Branchen genutzt. Im Jahr 2018 führte ein großer Cloud-Anbieter eine Umfrage unter IT-Fachkräften von Unternehmen aus den Bereichen Dienstleistung, Bildung und Finanzen durch. Von den sechstausend Befragten gaben 58 % an, dass sie bei ihrer Arbeit CI-Tools und -Prinzipien nutzen.

Wie funktioniert das

Die kontinuierliche Integration basiert auf zwei Tools: einem Versionskontrollsystem und einem 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 erstellt es. Anschließend führt es Integrations- und Unit-Tests durch. Wenn die Tests erfolgreich verlaufen, stellt das CI-System den Code bereit.

Das allgemeine Prozessdiagramm lässt sich wie folgt darstellen:

Referenz: Wie der Continuous-Integration-Prozess funktioniert

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

  • Beheben Sie Probleme sofort. Dieses Prinzip kam von Extreme Programming zu CI. Das Beheben von Fehlern hat für die Entwickler höchste Priorität.
  • Prozesse automatisieren. Entwickler und Manager müssen ständig nach Engpässen im Integrationsprozess suchen und diese beseitigen. Beispielsweise kommt es häufig zu Engpässen bei der Integration Wendungen testen.
  • Führen Sie Versammlungen so oft wie möglich durch. Einmal am Tag, um die Arbeit des Teams zu synchronisieren.

Schwierigkeiten bei der Umsetzung

Das erste Problem sind die hohen Betriebskosten. Selbst wenn ein Unternehmen offene CI-Tools nutzt (über die wir später sprechen werden), muss es dennoch Geld für die Infrastrukturunterstützung ausgeben. Allerdings könnten Cloud-Technologien die Lösung sein.

Sie vereinfachen den Zusammenbau unterschiedlich großer Computerkonfigurationen. Plus des Unternehmens bezahlt werden nur für die genutzten Ressourcen, was zur Einsparung von Infrastruktur beiträgt.

Laut Umfragen [Seite 14 Artikel] erhöht die kontinuierliche Integration die Belastung der Unternehmensmitarbeiter (zumindest zunächst). Sie müssen neue Werkzeuge erlernen und Kollegen helfen nicht immer bei der Schulung. Daher müssen Sie sich spontan mit neuen Frameworks und Diensten auseinandersetzen.

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

Referenz: Wie der Continuous-Integration-Prozess funktioniert
/flickr/ theilr / CC BY-SA

Wer benutzt

IT-Giganten gehörten zu den ersten, die die Vorteile der Methodik erkannten. Google verwendet Kontinuierliche Integration seit Mitte der 2000er Jahre. CI wurde implementiert, um das Problem der Verzögerungen in der Suchmaschine zu lösen. Durch die kontinuierliche Integration konnten Probleme schnell erkannt und behoben werden. Mittlerweile wird CI von allen Abteilungen des IT-Riesen genutzt.

Kontinuierliche Integration hilft auch kleinen Unternehmen, und CI-Tools werden auch von Finanz- und Gesundheitsorganisationen eingesetzt. Bei Morningstar beispielsweise halfen kontinuierliche Integrationsdienste dabei, Schwachstellen um 70 % schneller zu beheben. Und die medizinische Plattform von Philips Healthcare konnte die Geschwindigkeit der Testaktualisierungen verdoppeln.

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 mit verschiedenen VCS, Cloud-Plattformen und anderen Diensten. Wir verwenden auch Jenkins bei 1cloud: Tool in unserem DevOps-System enthalten. Er schaut sich regelmäßig den zum Testen vorgesehenen Git-Zweig an.
  • Baubot – ein Python-Framework zum Schreiben Ihrer eigenen kontinuierlichen Integrationsprozesse. Die anfängliche Einrichtung des Tools ist recht kompliziert, was jedoch durch die umfangreichen Anpassungsmöglichkeiten ausgeglichen wird. Zu den Vorteilen des Frameworks zählen vor allem die geringe Ressourcenintensität.
  • Halle CI ist ein Server von Pivotal, der Docker-Container verwendet. Concourse CI lässt sich in alle Tools und Versionskontrollsysteme integrieren. Die Entwickler weisen darauf hin, dass das System für den Einsatz in Unternehmen jeder Größe geeignet ist.
  • Gitlab-CI ist ein in das GitLab-Versionskontrollsystem integriertes Tool. Der Dienst läuft in der Cloud und nutzt YAML-Dateien zur Konfiguration. Wie Concourse, Gitlab CI gilt Docker-Container, die dabei helfen, verschiedene Prozesse voneinander zu isolieren.
  • Codeship ist ein Cloud-CI-Server, der mit GitHub, GitLab und BitBucket funktioniert. Die Plattform erfordert keine lange Ersteinrichtung – standardmäßig sind in Codeship vorinstallierte CI-Prozesse 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: habr.com

Kommentar hinzufügen