Continuous Integration und Continuous Deployment

Abgeschlossen

Bevor Sie die Infrastruktur Ihres Unternehmens ändern oder bereitstellen, müssen Sie sich im Klaren darüber sein, was Sie erstellen möchten. Untersuchen Sie dazu die Konzepte von Continuous Integration (CI) und Continuous Delivery bzw. Continuous Deployment (CD). In dieser Lerneinheit erfahren Sie mehr über CI/CD-Pipelines und lernen, wie Sie CI und CD mit GitHub Actions anwenden.

CI und CD sind Betriebspraktiken, welche helfen, die kontinuierliche Automatisierung und Überwachung für alle Phasen der Softwareentwicklung, des Testens und der Bereitstellung einzuführen. Entwicklerteams verwenden CI und CD, um produktiver zu sein und Probleme zu reduzieren, die auftreten können, wenn neuer Code in eine vorhandene Codebasis integriert wird.

Continuous Integration

Vor der Entwicklung von CI/CD-Tools war der gesamte Prozess des Entwickelns, Testens, Bereitstellens und erneuten Testens manuell. Automatisierte Testsammlungen waren verfügbar, jedoch mussten diese manuell ausgeführt oder durch Expertenteams zu geplanten Zeiten ausgeführt werden.

Eine der größten Herausforderungen für Softwareentwickler*innen war der Mergetag. Der Mergetag fand statt, da die meisten Softwareentwicklungsteams mit minimalen Tests an demselben Code in verschiedenen Branches der Quellcodeverwaltung arbeiteten. Am Mergetag wurden alle Codeänderungen zurück in den Mainbranch integriert. Infolgedessen musste ein ganzer Tag der Lösung von Integrationsproblemen gewidmet werden, wenn die Branches der Teammitglieder zusammengeführt wurden und sich im Mainbranch überschnitten.

Eines der wichtigsten CI-Prinzipien besteht darin, alle neuen Änderungen möglichst häufig im Mainbranch zusammenzuführen. Durch das kontinuierliche Zusammenführen von Änderungen kann die „Integrationshölle“ am Mergetag vermieden werden, die auftrat, wenn viele Entwickler*innen ihre Änderungen gleichzeitig kombinierten.

CI erfordert, dass Teams häufig die kleinsten Änderungen im Code implementieren und integrieren. Das Implementieren von CI bedeutet, dass Teams ständig testen, kompilieren, bereitstellen und dann in der Produktion erneut testen können. Das Ziel von CI besteht darin, durch Codeänderungen verursachte Produktionsprobleme zu erkennen und zu vermeiden, bevor sie sich auf den Maincodebranch auswirken können oder für Kunden bereitgestellt werden.

Continuous Delivery und Deployment

Continuous Delivery fährt an der Stelle fort, an der CI endet, und automatisiert den Bereitstellungsprozess in der ausgewählten Infrastrukturumgebung. Sie können Continuous Delivery nutzen, um Änderungen schnell und nachhaltig freizugeben. Wenn Sie Continuous Delivery verwenden, entscheiden Sie vorab, ob Sie die Bereitstellung der Änderungen täglich, wöchentlich, monatlich oder nach einem anderen, Ihren Geschäftsanforderungen entsprechenden Zeitplan vornehmen.

Continuous Deployment geht noch einen Schritt weiter, indem Änderungen, die alle Phasen der CI/CD-Pipeline durchlaufen haben, automatisch für die Produktion freigegeben werden. Continuous Deployment ist einer der fortschrittlichsten Prozesse in der Softwareentwicklung und erfordert Code, der alle Aspekte der Anwendungsfunktionen ohne menschliches Eingreifen testet.

CI/CD-Pipelines

Eine Pipeline umfasst die gesammelten Prozesse, die ausgeführt werden, wenn ein bestimmtes Ereignis eintritt. Eine große Anzahl von Ereignissen ist Teil der Softwareentwicklung, und eine CI/CD-Pipeline muss alle zugehörigen Ereignisse unterstützen. Wenn ein Ereignis die Pipeline auslöst, werden alle Listener für dieses Ereignis ausgelöst, und die erste Phase des Prozesses wird gestartet.

Eine CI/CD-Pipeline wird ausgeführt, wenn eine neue Codeänderung sie auslöst. In den meisten Fällen beginnt der Prozess mit dem Klonen oder Herunterladen von Quellcode. Anschließend wird der nächste Schritt ausgelöst usw.

Jedes Mal, wenn eine Codeänderung eine CI/CD-Ausführung auslöst, werden alle Schritte in der Pipeline ausgeführt. Wenn bei einem Schritt ein Fehler auftritt, wird die Ausführung der Pipeline beendet. Workflows können logische Sprünge enthalten, sodass einige Phasen unter bestimmten Bedingungen nicht ausgeführt werden. Die Pipeline insgesamt wird jedoch weiterhin ausgeführt.

GitHub-Aktionen

GitHub Actions unterstützt alle GitHub-bezogenen Ereignisse und automatisiert die CI/CD-Pipeline in diesem Modul. In GitHub Actions definiert jeder Schritt Aktionen entweder in JavaScript oder mithilfe eines Docker-Containers. Aktionen sind einfach zu erstellen und bilden die Bausteine der Pipelineschritte.

Sie können GitHub Actions verwenden, um den gesamten von GitHub gehosteten Code mit einem Automatisierungsworkflow nahtlos zu integrieren. Der Workflow verarbeitet mehrere Aufgaben, um den Code in mehrere Umgebungen zu integrieren.

GitHub Actions ist aufgrund des Open-Source-Modells ein beliebter Anbieter für CI/CD-Pipelines. Da Workflows Open Source sind, werden sie in Repositorys gespeichert, die für alle Benutzer*innen auf der Plattform verfügbar sind. GitHub-Benutzer*innen können ihre Aktionen gegenseitig verwenden oder eigene benutzerdefinierte Aktionen erstellen, ohne etwas anderes zu installieren oder zu konfigurieren.

Die Möglichkeit zum Freigeben von Aktionen zwischen Benutzer*innen bedeutet, dass Sie wiederholten Code oder Phasen nicht neu schreiben müssen, sondern vorhandene Aktionen verwenden oder anpassen können. In den nächsten Lerneinheiten verwenden Sie GitHub Actions in einem Docker-Container, um eine CI/CD-Pipeline zu definieren, die Continuous Deployment einer Anwendung implementiert.

Überprüfen Sie Ihr Wissen

1.

Inwiefern unterscheiden sich CI und CD?

2.

Was ist eine CI-Pipeline?