Was ist CI/CD? Kontinuierliche Integration und kontinuierliche Lieferung

Was ist kontinuierliche Integration (CI)?

Kontinuierliche Integration ist eine Softwareentwicklungsmethode, bei der Teammitglieder ihre Arbeit mindestens einmal am Tag integrieren. Bei dieser Methode wird jede Integration durch einen automatisierten Build überprüft, um Fehler zu erkennen. Dieses Konzept wurde erstmals vor über zwei Jahrzehnten eingeführt, um die „Integrationshölle“ zu vermeiden, die entsteht, wenn die Integration bis zum Ende eines Projekts verschoben wird.

Bei der kontinuierlichen Integration wird die Software nach einem Code-Commit sofort erstellt und getestet. In einem großen Projekt mit vielen Entwicklern werden Commits mehrmals am Tag vorgenommen. Mit jedem Commit wird Code erstellt und getestet. Wenn der Test bestanden wird, wird der Build für die Bereitstellung getestet. Wenn die Bereitstellung erfolgreich ist, wird der Code an die Produktion übertragen. Dieses Festschreiben, Erstellen, Testen und Bereitstellen ist ein kontinuierlicher Prozess und daher der Name kontinuierliche Integration/Bereitstellung.

Was ist Continuous Delivery (CD)?

Kontinuierliche Liefer ist eine Softwareentwicklungsmethode, bei der ein Team Softwareprodukte in kurzen Zyklen entwickelt. Sie stellt sicher, dass Software jederzeit problemlos freigegeben werden kann. Das Hauptziel von Continuous Delivery besteht darin, Software mit guter Geschwindigkeit und Häufigkeit zu erstellen, zu testen und freizugeben. Es hilft Ihnen, die Kosten, den Zeitaufwand und das Risiko der Bereitstellung von Änderungen zu reduzieren, indem es häufige Updates in der Produktion ermöglicht.

Was ist der Unterschied zwischen CI und CD?

CI vs. CD: Continuous Integration (CI) ist ein Ansatz, bei dem jede Änderung an der Codebasis automatisch getestet wird, während Continuous Delivery (CD) ein Ansatz ist, um Änderungen neuer Funktionen, Konfigurationen und Fehlerbehebungen zu erhalten.

Entwicklung ohne CI vs. Entwicklung mit CI

Hier sind die wichtigsten Unterschiede zwischen der Entwicklung mit und ohne CI:

Entwicklung ohne CI Entwicklung mit CI
Viele Fehler Weniger Fehler
Seltene Commits Regelmäßige Commits
Seltene und langsame Veröffentlichungen Regelmäßige Arbeitsveröffentlichungen
Schwierige Integration Einfache und effektive Integration
Die Prüfung erfolgt spät Kontinuierliche Integrationstests finden früh und häufig statt.
Die angesprochenen Probleme sind schwieriger zu beheben Finden und beheben Sie Probleme schneller und effizienter.
Schlechte Sichtbarkeit des Projekts Bessere Projekttransparenz

Unterschied zwischen Kompilierung und kontinuierlicher Integration

Aktivitäten in der kontinuierlichen Integration
Aktivitäten in der kontinuierlichen Integration

Während die Kompilierung nur den Code kompiliert, führt die CI die folgenden Aktivitäten aus

DB-Integration

  • Stellen Sie sicher, dass DB und Code synchron sind
  • Automatisierte Erstellung von DB- und Testdaten.

Code-Inspektion

  • Stellt eine gesunde Codebasis sicher
  • Identifiziert Probleme frühzeitig und wendet Best Practices an

Automatisierte Bereitstellung

  • Ermöglicht Ihnen, das Produkt jederzeit freizugeben
  • Ständig vorführfähiger Zustand und funktioniert auf jedem Computer

Dokumenterstellung

  • Stellen Sie sicher, dass die Dokumentation aktuell ist
  • Entfernt verbrannten Entwickler
  • Erstellt Build-Berichte und -Metriken

Zusammenstellung

Kompilierung ist der Prozess, den der Computer durchführt, um einen High-Level-Programmiersprachencode in eine Maschinensprache umzuwandeln, die der Computer verstehen kann. Es stellt einen Code-Compiler auf jeder Zielplattform sicher.

Wann baue ich?

  • Bei jedem Check-in
  • Jedes Mal, wenn sich eine Abhängigkeit ändert

Welche Schritte gibt es bei der kontinuierlichen Integration?

CI-Prozess
CI-Prozess
  • Idealerweise sollte der Build über die Befehlszeile erfolgen und nicht von einer integrierten Entwicklungsumgebung (IDE) abhängig sein.
  • Der Build sollte kontinuierlich über einen dedizierten Cl-Server erfolgen, nicht über einen Cron-Job.
  • CI-Built sollte bei jedem Check-in ausgelöst werden und nicht erst um Mitternacht
  • Der Build sollte sofortiges Feedback liefern und keinen Entwickleraufwand erfordern
  • Identifizieren Sie wichtige Kennzahlen und verfolgen Sie sie visuell. Noch wichtiger ist, dass Sie sofort darauf reagieren

Was benötigen Sie zur Durchführung des CI-Prozesses?

Führen Sie den CI-Prozess durch

Hier sind die Schlüsselelemente, die Sie zur Durchführung des gesamten CI-Prozesses benötigen:

  • Versionskontrollsystem (VCS): Es bietet eine zuverlässige Methode, um an Ihrem Projekt vorgenommene Änderungen im Laufe der Zeit zu zentralisieren und zu bewahren.
  • Virtuelle Maschine: Sie sollten einen Ersatzserver oder zumindest einen haben virtuellen Maschine um Ihr System aufzubauen.
  • Gehostete CI-Tool-Lösungen: Um Server oder virtuelle Maschinen zu vermeiden, sollten Sie sich für gehostete CI-Tool-Lösungen entscheiden. Dieses Tool hilft bei der Wartung des gesamten Prozesses und bietet eine einfachere Skalierbarkeit.
  • Tools: Wenn Sie sich für eine selbst gehostete Variante entscheiden, müssen Sie eine der vielen installieren CI-Werkzeuge wie Jenkins, TeamCity, Bamboo, GitLab usw.

Wie funktioniert kontinuierliche Integration?

Sie kennen sicherlich das alte Nokia-Handy. Nokia hat früher ein Verfahren namens Nightly Build implementiert. Nach mehreren Commits von verschiedenen Entwicklern im Laufe des Tages wurde die Software jede Nacht erstellt. Da die Software nur einmal am Tag erstellt wurde, ist es sehr mühsam, die Fehler in einer großen Codebasis zu isolieren, zu identifizieren und zu beheben.

Later, haben sie den Ansatz der kontinuierlichen Integration übernommen. Die Software wurde erstellt und getestet, sobald ein Entwickler Code festgeschrieben hatte. Wird ein Fehler festgestellt, kann der jeweilige Entwickler den Mangel schnell beheben.

Beispiel für kontinuierliche Integration
Beispiel für kontinuierliche Integration

Merkmale von CI

Hier sind wichtige Funktionen und Vorteile der kontinuierlichen Integration:

  • Ermöglicht Ihnen die Verwaltung nur eines einzigen Quell-Repositorys
  • Sie können den Klon der Produktions-CI-Umgebung testen
  • Die bebaute Umgebung sollte nahe an der Produktionsumgebung liegen.
  • Einer der Vorteile der kontinuierlichen Integration ist die ständige Verfügbarkeit eines aktuellen Builds
  • Der vollständige Prozess des Erstellens, Testens und Bereitstellens sollte für alle Stack-Inhaber sichtbar sein.

Warum CI verwenden?

Hier sind wichtige Gründe für den Einsatz von Continuous Integration:

  • Hilft Ihnen, Software von besserer Qualität zu erstellen
  • Der CI-Prozess trägt dazu bei, die Mitarbeiterzahl und die Lieferleistung der Ingenieurteams zu erhöhen.
  • CI ermöglicht es Softwareentwicklern, unabhängig und parallel an Funktionen zu arbeiten.
  • Hilft Ihnen, wiederholbare Tests durchzuführen
  • Erhöhen Sie die Sichtbarkeit und ermöglichen Sie eine bessere Kommunikation
  • Hilft bei der Entwicklung eines potenziell lieferbaren Produkts für den vollautomatischen Build
  • Hilft Ihnen, Risiken zu reduzieren, indem die Bereitstellung schneller und vorhersehbarer wird
  • sofortiges Feedback, wenn das Problem auftritt
  • Vermeiden Sie Verwirrung in letzter Minute über Veröffentlichungsdatum und -zeitpunkt

Best Practices für die Verwendung von CI-Systemen

Hier finden Sie einige wichtige Best Practices bei der Implementierung

  • Frühzeitig festschreiben und häufig nie festschreiben. Defekten Code festschreiben
  • Beheben Sie Build-Fehler sofort
  • Handeln Sie anhand von Kennzahlen
  • Integrieren Sie jede Zielumgebung. Erstellen Sie Artefakte aus jedem Build
  • Die Erstellung der Software muss so erfolgen, dass sie automatisiert werden kann
  • Verlassen Sie sich nicht auf eine IDE
  • Erstellen und testen Sie alles, wenn es sich ändert
  • Das Datenbankschema zählt als alles
  • Hilft Ihnen, wichtige Kennzahlen herauszufinden und diese visuell zu verfolgen
  • Checken Sie oft und früh ein
  • Stärkere Quellcode-Kontrolle
  • Bei der kontinuierlichen Integration werden Komponententests ausgeführt, wann immer Sie Code festschreiben
  • Automatisieren Sie den Build und testen Sie alle
  • Halten Sie den Build durch automatisierte Bereitstellung schnell

Nachteile von CI

Hier sind die Vor- und Nachteile des kontinuierlichen Integrationsprozesses:

  • Um sich mit dem Cl-Server vertraut zu machen, ist eine anfängliche Einrichtungszeit und Schulung erforderlich
  • Die Entwicklung geeigneter Testverfahren ist unerlässlich
  • Eine gut entwickelte Testsuite erforderte viele Ressourcen für den Cl-Server
  • Konvertierung bekannter Prozesse
  • Erfordert zusätzliche Server und Umgebungen
  • Wenn mehrere Entwickler gleichzeitig ihren Code integrieren möchten, kann es zu Wartezeiten kommen

Tools für den CI-Prozess

Hier sind einige der wichtigsten CI/CD-Tools:

Jenkins

Jenkins

Jenkins ist eine Open-Source-Software für kontinuierliche Integration. Es wird mit der geschrieben Java Programmiersprache. Es ermöglicht Echtzeittests und Berichte zu isolierten Änderungen in einer umfangreicheren Codebasis. Diese Software hilft Entwicklern, Fehler in ihrer Codebasis schnell zu finden und zu beheben und das Testen ihrer Builds zu automatisieren.

Bamboo

Bamboo

Bamboo ist ein Build-Server für kontinuierliche Integration, der automatisches Erstellen, Testen und Freigeben an einem einzigen Ort durchführt. Er funktioniert nahtlos mit JIRA-Software und Bitbucket. Bamboo unterstützt viele Sprachen und Technologien wie CodeDeply, Docker, Git, SVN, Mercurial, AWS und Amazon S3-Eimer.

TeamCity

TeamCity

TeamCity ist ein Continuous Integration-Server, der viele leistungsstarke Funktionen unterstützt. Er hält einen CI-Server gesund und stabil, auch wenn keine Builds ausgeführt werden. Er bietet eine bessere Codequalität für jedes Projekt

Zusammenfassung

  • Definition der kontinuierlichen Integration: Kontinuierliche Integration ist eine Softwareentwicklungsmethode, bei der Teammitglieder ihre Arbeit mindestens einmal am Tag integrieren können
  • CI/CD bedeutet Kombination aus Continuous Integration und Continuous Delivery oder Continuous Deployment.
  • Bei der Entwicklung ohne CI entstehen viele Fehler, während bei der Entwicklung mit CI weniger Fehler auftreten
  • Wichtige Aktivitäten der kontinuierlichen Integration sind 1) DB-Integration, 2) Code-Inspektion, 3) automatisierte Bereitstellung, Dokumentengenerierung und Kompilierung.
  • Der Build sollte kontinuierlich über einen dedizierten Cl-Server erfolgen, nicht über einen Cron-Job.
  • Wichtige Elemente von CI sind 1) Versionskontrollsystem 2) Virtuelle Maschine 3) Host-CI-Tool-Lösungen 4) Tools
  • Mit dem Continuous-Integration-System können Sie nur ein einziges Quell-Repository verwalten
  • Der CI/CD-Prozess hilft Ihnen, Software von besserer Qualität zu erstellen
  • Die wichtigsten Best Practices von Azure Der kontinuierliche Integrationsprozess besteht darin, frühzeitig und häufig zu committen und niemals fehlerhaften Code zu committen.
  • Der größte Nachteil der CI / CD-Pipeline Der Prozess besteht darin, dass eine gut entwickelte Testsuite viele Ressourcen für den Cl-Server erfordert
  • Jenkins, Bambook und Team City sind einige nützliche AWS Continuous Integrationstools.