Referenz: So funktioniert der Continuous Integration-Prozess

Heute werden wir die Geschichte des Begriffs untersuchen, die Herausforderungen der Implementierung von CI besprechen und einige beliebte Werkzeuge vorstellen, die dabei helfen, damit zu arbeiten.

Referenz: So funktioniert der Continuous Integration-Prozess
/ Flickr / Altug Karakoc / CC BY / Фото изменено

Begriff

Continuous Integration (kontinuierliche Integration) ist ein Ansatz zur Softwareentwicklung, der häufige Builds von Projekten und das Testen von Code umfasst.

Ziel ist es, den Integrationsprozess vorhersehbar zu gestalten und potenzielle Bugs und Fehler frühzeitig zu erkennen, um mehr Zeit für deren Behebung zu haben.

Der Begriff Continuous Integration tauchte erstmals 1991 auf. Eingeführt wurde er vom Erfinder der UML-Sprache, Grady Booch . Der Ingenieur stellte das Konzept von CI als Teil seiner eigenen Entwicklungspraktiken vor — Booch Methode. Er verstand darunter eine inkrementelle Verfeinerung der Architektur beim Design objektorientierter Systeme. Grady legte keine spezifischen Anforderungen an die kontinuierliche Integration fest. Aber später in seinem Buch „Object-Oriented Analysis and Design with Applications“ sagte er, dass die Aufgabe der Methode darin besteht, die Veröffentlichung von „inneren Releases“ zu beschleunigen.

Geschichte

1996 übernahmen die Schöpfer der Methodologie des extremalen Programmierens (XP) — Kent Beck und Ron Jeffries . Die kontinuierliche Integration wurde zu einem der zwölf Schlüsselprinzipien ihres Ansatzes. Die Gründer von XP präzisierte die Anforderungen an die CI-Methodologie und betonten die Notwendigkeit, die Projekte mehrmals täglich zu bauen.

Zu Beginn der 2000er Jahre begann einer der Gründer der Agile Alliance, Martin Fowler , die Methodologie der kontinuierlichen Integration zu fördern. Seine Experimente mit CI führten zur Entwicklung des ersten Softwaretools in diesem Bereich — CruiseControl. Das Tool wurde von Martins Kollegen — Matthew Foemmel — entwickelt.

Der Build-Zyklus in diesem Werkzeug wird in Form eines Daemons realisiert, der regelmäßig das Versionskontrollsystem auf Änderungen in der Codebasis überprüft. Die Lösung kann auch heute noch heruntergeladen werden — sie wird verbreitet steht unter einer BSD-ähnlichen Lizenz.

Mit dem Aufkommen von CI-Software begannen immer mehr Unternehmen, diese Praxis zu übernehmen. Laut einer Umfrage von Forrester [S. 5 Bericht] nutzten im Jahr 2009 86 % von fünfzig befragten Technologieunternehmen CI-Methoden oder führten sie ein.

Heute wird die Continuous Integration-Praxis von Organisationen aus den unterschiedlichsten Branchen angewendet. Im Jahr 2018 führte ein großer Cloud-Anbieter eine Umfrage unter IT-Experten von Unternehmen aus den Bereichen Dienstleistungen, Bildung und Finanzen durch. Von den sechstausend Befragten gaben 58 % an, dass sie in ihrer Arbeit CI-Tools und -Prinzipien nutzen.

Die DANE-Spezifikation ist in

Die Basis der kontinuierlichen Integration bilden zwei Werkzeuge – das Versionskontrollsystem und der CI-Server. Letzterer kann sowohl ein physisches Gerät als auch eine virtuelle Maschine in der Cloud sein. Entwickler laden ein- oder mehrmals am Tag neuen Code hoch. Der CI-Server kopiert diesen automatisch mit allen Abhängigkeiten und führt den Build durch. Danach startet er Integrations- und Unit-Tests. Wenn die Tests erfolgreich sind, wird der Code durch das CI-System bereitgestellt.

Das Gesamtschema des Prozesses kann wie folgt dargestellt werden:

Referenz: So funktioniert der Continuous Integration-Prozess

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 die 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 beheben. Oft ist das "Flaschenhals"-Problem in der Integration stellt sich heraus Testing.
  • So oft wie möglich Builds durchführen. Einmal am Tag, um die Arbeit des Teams zu synchronisieren.

Herausforderungen bei der Implementierung

Das erste Problem sind hohe Betriebskosten. Selbst wenn ein Unternehmen Open-Source-CI-Tools verwendet (über die wir später sprechen werden), muss es dennoch Geld für die Infrastrukturpflege ausgeben. Cloud-Technologien können jedoch eine Lösung sein.

Sie vereinfachen den Build unterschiedlicher Computer Konfigurationen. Außerdem zahlen Unternehmen Was Russland betrifft, sind Moskauer Unternehmen nur für die genutzten Ressourcen, was hilft, die Infrastrukturkosten zu senken.

Laut Umfragen [S.14 des Artikels], erhöht die kontinuierliche Integration zunächst die Belastung der Mitarbeiter im Unternehmen. Sie müssen sich mit neuen Werkzeugen vertrautmachen, und die Kollegen helfen nicht immer beim Lernen. Daher müssen sie sich mit neuen Frameworks und Services "im laufenden Betrieb" auseinandersetzen.

Die dritte Herausforderung sind Automatisierungsprobleme. Diese treten in Organisationen mit umfangreichem Legacy-Code auf, der nicht mit automatisierten Tests abgedeckt ist. Dies führt dazu, dass der Code vor der vollständigen Implementierung von CI einfach neu geschrieben wird.

Referenz: So funktioniert der Continuous Integration-Prozess
/ Flickr / theilr / CC BY-SA

Wer verwendet

Zu den ersten Vorteilen der Methode gehörten die IT-Giganten. Google verwendet führte kontinuierliche Integration seit Mitte der 2000er Jahre ein. CI wurde zur Lösung des Problems von Verzögerungen in der Funktionsweise der Suchmaschine implementiert. Kontinuierliche Integration half, Störungen schnell zu erkennen und zu beheben. Heute wird CI in allen Abteilungen des IT-Giganten eingesetzt.

Kontinuierliche Integration hilft auch kleinen Unternehmen, und zudem nutzen Finanz- und Gesundheitsorganisationen CI-Tools. Beispielsweise halfen die Kontinuierlichen Integrationsdienste von Morningstar, Schwachstellen 70 % schneller zu patchen. Die Gesundheitsplattform Philips Healthcare konnte das Testen vonUpdates verdoppeln.

Werkzeuge

Hier sind einige beliebte CI-Tools:

  • Jenkins — eines der beliebtesten CI-Systeme. Es unterstützt über tausend Plugins zur Integration mit verschiedenen VCS, Cloud-Plattformen und anderen Diensten. Auch wir bei 1cloud nutzen Jenkins: das Tool ist Teil unseres DevOps-Systems.Es überprüft regelmäßig den für Tests vorgesehenen Git-Branch.
  • Buildbot — ein Python-Framework zur Erstellung eigener Prozesse der kontinuierlichen Integration. Die anfängliche Konfiguration des Tools ist recht komplex, wird jedoch durch umfangreiche Anpassungsmöglichkeiten ausgeglichen. Zu den Vorteilen des Frameworks zählen die niedrigen Ressourcenanforderungen.
  • Concourse CI — ein Server von Pivotal, der Docker-Container verwendet. Concourse CI integriert sich mit beliebigen Werkzeugen und Versionskontrollsystemen. Entwickler bemerken, dass das System für Unternehmen jeder Größe geeignet ist.
  • Gitlab CI — ein in das Versionskontrollsystem GitLab integriertes Tool. Der Dienst arbeitet in der Cloud und verwendet YAML-Dateien zur Konfiguration. Wie Concourse, Gitlab CI verwendet Docker-Container, die helfen, verschiedene Prozesse voneinander zu isolieren.
  • Codeship — ein cloudbasierter CI-Server, der mit GitHub, GitLab und BitBucket arbeitet. Die Plattform erfordert keine lange Erstkonfiguration — in Codeship sind Standard-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:

Quelle: habr.com

Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server 🔥 Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster