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?
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
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?
- 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?
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.
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 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 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 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.