Was ist CI/CD?

URL kopieren

Ziel von CI/CD, kurz für Continuous Integration und Continuous Delivery/Deployment, ist die Optimierung und Beschleunigung des Softwareentwicklungs-Lifecycles.

Continuous Integration (CI) bezieht sich auf die Praktik, Codeänderungen automatisch und regelmäßig in ein gemeinsames Quellcode-Repository zu integrieren. Continuous Delivery und/oder Continuous Deployment (CD) ist ein zweiteiliger Prozess, der die Integration, das Testen und die Bereitstellung der Codeänderungen umfasst. Continuous Delivery beinhaltet kein automatisches Produktiv-Deployment, während beim Continuous Deployment Update-Releases automatisch in die Produktivumgebung übergeben werden.

 

CI/CD Flow

 

Diese zusammenhängenden Praktiken werden oft als „CI/CD-Pipeline“ bezeichnet. Sie werden von Entwicklungs- und Operations-Teams unterstützt, die auf agile Weise mit einem DevOps- oder SRE-Ansatz (Site Reliability Engineering) zusammenarbeiten.

Mit CI/CD können Unternehmen einen kontinuierlichen Softwareentwicklungs- und -updatezyklus aufrechterhalten und dabei gleichzeitig Bugs und Codefehler vermeiden.

Wenn Apps zunehmend größer werden, können die Funktionen von CI/CD die Komplexität reduzieren, die Effizienz verbessern und Workflows optimieren.

CI/CD automatisiert die manuellen menschlichen Interventionen, die traditionell erforderlich sind, um neuen Code vom Commit in die Produktion zu bringen. Dadurch werden Ausfallzeiten minimiert, während Code-Releases häufiger stattfinden können. Da sich Updates und Codeänderungen schneller integrieren lassen, kann das Feedback von Nutzenden regelmäßiger und effizienter umgesetzt werden. Das führt zu positiven Ergebnissen für Endbenutzende und insgesamt zu einer höheren Kundenzufriedenheit. 

Red Hat Ressourcen

Das „CI“ in CI/CD steht für Continuous Integration, einen Automatisierungsprozess für Entwicklungsteams, der ein häufigeres Zusammenführen von Codeänderungen zu einem gemeinsamen Codezweig oder „Trunk“ ermöglicht. Im Zuge dieser Updates werden automatisierte Testschritte angestoßen, die für die Zuverlässigkeit der zusammengeführten Codeänderungen sorgen.

Bei der modernen Anwendungsentwicklung arbeiten mehrere Entwicklerinnen und Entwickler an unterschiedlichen Features einer App. Die gleichzeitige Zusammenführung der Quellcode-Verzweigungen an einem Tag (auch bekannt als „Merge Day“) kann einen hohen Arbeits- und Zeitaufwand bedeuten.

Wenn isoliert arbeitende Entwicklerinnen und Entwickler Änderungen an einer Anwendung vornehmen, können diese mit Änderungen in Konflikt stehen, die zeitgleich von anderen Mitgliedern des Entwicklungsteams durchgeführt wurden. Dieses Problem kann sich verstärken, wenn die einzelnen Entwicklerinnen und Entwickler jeweils eigene lokale IDE (Integrated Development Environment) definieren, statt im Team eine gemeinsame cloudbasierte IDE zu erstellen.

CI ist damit sozusagen die Lösung zu dem Problem, gleichzeitig zu viele Codezweige einer Anwendung in der Entwicklung zu haben, die miteinander in Konflikt stehen.

Bei einer erfolgreichen CI werden die von Entwicklungsteams vorgenommenen Codeänderungen nach der Zusammenführung validiert, indem die Anwendung automatisch entwickelt und verschiedene Stufen automatisierter Tests – in der Regel Unit- und Integrationstests – durchgeführt werden. So wird sichergestellt, dass die Anwendung nach den Änderungen weiterhin funktioniert. Einer der Vorteile von CI liegt darin, dass falls bei den automatisierten Tests ein Konflikt zwischen neuem und bestehendem Code entdeckt wird, sich diese Fehler einfach und regelmäßig beheben lassen.

„CD“ in CI/CD bezieht sich auf Continuous Delivery und/oder Continuous Deployment – verwandte Konzepte, die zuweilen synonym verwendet werden. Bei beiden geht es um die Automatisierung weiterer Phasen der Pipeline, aber die Begriffe werden manchmal separat verwendet, um den Umfang der Automatisierung in CD zu verdeutlichen. Die Wahl zwischen Continuous Delivery und Continuous Deployment hängt von der Risikotoleranz und den spezifischen Anforderungen der Entwicklungs- und Operations-Teams ab.

 Continuous Delivery automatisiert das Release von validiertem Code in ein Repository, nachdem in der CI-Phase die Builds automatisiert und Unit- und Integrationstests durchgeführt wurden. Für einen effektiven CD-Prozess (Continuous Delivery) ist es also wichtig, dass CI bereits in Ihre Entwicklungs-Pipeline integriert ist.

Sämtliche Phasen der Continuous Delivery – vom Zusammenführern der Codeänderungen bis hin zur Lieferung der produktionsfertigen Builds – umfassen Test- und Release-Automatisierungen. Am Ende dieses Prozesses kann das Operations-Team eine Anwendung dann schnell für die Produktion bereitstellen.

Continuous Delivery bedeutet üblicherweise, dass App-Änderungen eines Entwicklungsteams automatisch auf Bugs getestet und in ein Repository (wie GitHub oder eine Container Registry) hochgeladen werden, von wo aus sie vom Operations-Team in einer Live-Produktivumgebung bereitgestellt werden können. Dadurch lässt sich das Problem der mangelnden Transparenz und Kommunikation zwischen Entwicklungs- und Geschäftsteams überwinden. Continuous Delivery dient hier dem Zweck, über eine Codebasis zu verfügen, die stets bereit ist für das Deployment in einer Produktivumgebung. Außerdem soll das Deployment von neuem Code mit minimalem Aufwand erfolgen können.

Mehr über Continuous Delivery erfahren

Die Endphase einer ausgereiften CI/CD-Pipeline ist das Continuous Deployment (CD). Continuous Deployment ist eine Erweiterung der Continuous Delivery und kann sich auf die automatische Freigabe von Entwickleränderungen vom Repository zur Produktivphase beziehen, wo sie direkt von den Nutzenden verwendet werden können.

Mit CD können Operations-Teams von manuellen Prozessen entlastet werden, die die Anwendungsbereitstellung verlangsamen. Continuous Deployment baut auf den Vorteilen der Continuous Delivery auf, indem auch die nächste Phase in der Pipeline automatisiert wird.

In der Praxis bedeutet Continuous Deployment, dass App-Änderungen einer Entwicklerin oder eines Entwicklers binnen weniger Minuten nach ihrer Erstellung live gehen können (vorausgesetzt, sie bestehen den automatischen Test). Dies erleichtert eine kontinuierliche Integration von Feedback ungemein. Zusammen können diese miteinander verbundenen CI/CD-Praktiken die Risiken beim Deployment reduzieren, da sie den Prozess erleichtern, viele Releases mit kleinen Änderungen vorzunehmen statt sämtliche Änderungen in einem einzigen Release durchzuführen.

Da es jedoch in der Pipeline vor dem Übergang in die Produktion kein manuelles Gate gibt, ist Continuous Deployment stark von einer gut konzipierten Test-Automatisierung abhängig. Dabei können enorme Vorlaufkosten erforderlich sein, um automatisierte Tests für verschiedene Test- und Releasephasen in der CI/CD-Pipeline zu schreiben.

Mehr über Deployment-Automatisierung erfahren

CI/CD ist ein wesentlicher Bestandteil von DevOps-Methoden, mit denen die Zusammenarbeit zwischen Entwicklungs- und Operations-Teams gefördert werden soll. Sowohl CI/CD als auch DevOps legen den Fokus auf die Automatisierung von Code-Integrationsprozessen. Dadurch beschleunigen sie die Prozesse, die Ideen (wie etwa neue Features, Verbesserungsanfragen oder Bug Fixes) von der Entwicklung bis zur Bereitstellung in einer Produktivumgebung durchlaufen, in der sie dann Nutzenden einen Mehrwert bieten können. 

Beim auf Zusammenarbeit basierenden DevOps-Ansatz aber wird Sicherheit zur gemeinsamen Verantwortung, die von Anfang an in den Ablauf integriert ist. Dieses Prinzip ist so zentral, dass es auch „DevSecOps“ genannt wird, um zu unterstreichen, dass DevOps-Initiativen eine starke Sicherheitsbasis zugrunde liegen muss. DevSecOps (Development, Security und Operations) ist ein Konzept für Unternehmenskultur-, Automatisierungs-, und Plattformdesign, das Sicherheit als gemeinsame Verantwortlichkeit im gesamten IT-Lifecycle integriert. Eine wichtige Komponente von DevSecOps ist das Einführen einer sicheren CI/CD-Pipeline.

Warum Red Hat für DevOps?

CI/CD-Sicherheit dient dem Schutz von Code-Pipelines durch automatisierte Prüfungen und Tests, um Schwachstellen bei der Softwarebereitstellung zu vermeiden. Durch die Integration von Sicherheit in Ihrer Pipeline – durch Sicherheitsansätze wie Shift Left und Shift Right – können Sie Ihren Code besser vor Angriffen schützen, Datenlecks vermeiden, die Compliance mit Richtlinien unterstützen und für Qualitätssicherung sorgen.

Die schnelle Entwicklung und Bereitstellung ohne angemessene Sicherheitsvorkehrungen kann die Pipeline Risiken aussetzen, wie etwa den folgenden:

  • Offenlegen sensibler Daten gegenüber externen Quellen
  • Verwenden von unsicherem Code oder Komponenten von Drittanbietern
  • Unbefugter Zugriff auf Quellcode-Repositories oder Build-Tools

Das Identifizieren und Beheben von Schwachstellen während des gesamten Softwareentwicklungszyklus stellt sicher, dass Codeänderungen gründlich getestet werden und den Sicherheitsstandards entsprechen, bevor sie in der Produktion bereitgestellt werden.

CI/CD-Tools können ein Team dabei unterstützen, die Entwicklung, das Deployment und die Tests zu automatisieren. Einige Tools unterstützen speziell die Integration (CI), andere verwalten die Entwicklung und das Deployment (CD), andere wiederum kontinuierliches Testen oder ähnliche Funktionen.

Tekton Pipelines ist ein CI/CD-Framework für Kubernetes-Plattformen, das ein cloudnatives CI/CD-Standarderlebnis mit Containern bietet.

Erfahren Sie mehr über Tekton Pipelines 

Neben Tekton Pipelines gibt es noch weitere quelloffene CI/CD-Tools, die Sie sich ansehen sollten:

  • Jenkins, ein umfassendes Tool zur Handhabung einfacher CI-Server bis hin zu vollständigen CD-Hubs
  • Spinnaker, eine CD-Plattform für Multi-Cloud-Umgebungen
  • GoCD, ein CI/CD-Server mit Schwerpunkt auf Modellierung und Visualisierung
  • Concourse, „ein kontinuierlicher Open Source-Macher“
  • Screwdriver, eine für CD konzipierte Build-Plattform

Teams können auch gemanagte CI/CD-Tools in Betracht ziehen, die von verschiedenen Anbietern erhältlich sind. Die großen Public Cloud-Anbieter verfügen über CI/CD-Lösungen, ebenso wie GitLab, CircleCI, Travis CI, Atlassian Bamboo und viele andere.

Außerdem ist ein Tool, das für DevOps grundlegend ist, wahrscheinlich auch Teil eines CI/CD-Prozesses. Tools für die Konfigurationsautomatisierung (wie Ansible, Chef und Puppet), Container Runtimes (wie Docker, rkt und cri-o) und Container-Orchestrierung (Kubernetes) sind keine reinen CI/CD-Tools, kommen aber in vielen CI/CD-Workflows vor.

Es gibt viele verschiedene Möglichkeiten, CI/CD zu implementieren, je nach der von Ihnen bevorzugten Strategie für die Anwendungsentwicklung und dem Cloud-Anbieter. Red Hat® OpenShift® Service on AWS bietet verschiedene Optionen wie Tekton und OpenShift Pipelines, um Ihren eigenen CI/CD-Workflow zu vereinfachen. Durch den Einsatz von Red Hat OpenShift können Unternehmen CI/CD einsetzen, um die Entwicklung, das Testen und das Deployment einer Anwendung auf mehreren On-Premise und Cloud-Plattformen zu automatisieren. 

Unsere Expertinnen und Experten unterstützen Ihre Organisation beim Entwickeln der erforderlichen Praktiken, Tools und Kultur, mit denen Sie Ihre bestehenden Anwendungen effizienter modernisieren und den Einstieg in die cloudnative Anwendungsentwicklung beschleunigen können.

Mit Red Hat® OpenShift® können Unternehmen die Produktivität ihrer Entwicklungsteams steigern, ihre CI/CD-Pipelines automatisieren sowie Sicherheitsmaßnahmen früher einbinden und auf den gesamten Entwicklungszyklus ausweiten.

Red Hat OpenShift Pipelines wurde entwickelt, um die Schritte der CI/CD-Pipeline in einem eigenen Container auszuführen. Dadurch lassen sich die einzelnen Schritte unabhängig skalieren, und die Anforderungen der Pipeline werden erfüllt. Dies bedeutet, dass Administrations- und Entwicklungsteams Pipeline-Blueprints für Anwendungen erstellen können, die auf den besonderen Geschäfts- und Sicherheitsanforderungen ihres Unternehmens basieren.

Red Hat OpenShift GitOps ist ein Operator, der einen Workflow bereitstellt, mit dem Git-Repositories, CI/CD-Tools (Continuous Integration/Continuous Delivery) und Kubernetes integriert werden. So können Sie eine schnellere, skalierbare Softwareentwicklung mit mehr Sicherheit erreichen, ohne dabei Abstriche bei der Qualität machen zu müssen.Mit OpenShift GitOps können Kunden deklarative Git-gesteuerte CD-Workflows erstellen und direkt in ihre Anwendungsentwicklungsplattform integrieren.

Red Hat Ansible® Automation Platform enthält sämtliche Tools, die für das Implementieren einer unternehmensweiten Automatisierung erforderlich sind, einschließlich einer eventgesteuerten Lösung, Analysen und vordefinierten Content Collections. Durch die gemeinsame YAML-basierte Sprache und einen Ansatz für den gewünschten Zustand können Sie dieselben Automatisierungsinhalte sowohl für den täglichen Betrieb als auch für Ihre CI/CD-Pipeline verwenden. Und da die Plattform mit nahezu allen Aspekten Ihrer IT-Infrastruktur zusammenarbeitet, können Sie konsistente Entwicklungs-, Test- und Produktivumgebungen einfach und schnell bereitstellen und so die Zuverlässigkeit und Resilienz Ihrer Anwendungen erhöhen.

Ansible Automation Platform bietet auch Integrationsmöglichkeiten mit Red Hat Advanced Cluster Management for Kubernetes und ermöglicht Ihnen so die Orchestrierung von Kubernetes-Clustern innerhalb Ihrer CI/CD-Pipeline. Außerdem können Sie mit der für Menschen lesbaren Automatisierungssprache Red Hat OpenShift Operators einfacher entwickeln und verwalten.

Wie Automatisierung CI/CD-Pipelines unterstützt

Hub

Der offizielle Red Hat Blog

Lernen Sie mehr über unser Ökosystem von Kunden, Partnern und Communities und erfahren Sie das Neueste zu Themen wie Automatisierung, Hybrid Cloud, KI und mehr.

Red Hat Testversionen

Unsere kostenlosen Testversionen unterstützen Sie dabei, praktische Erfahrungen zu sammeln, sich auf eine Zertifizierung vorzubereiten oder zu bewerten, ob ein Produkt die richtige Wahl für Ihr Unternehmen ist.

Weiterlesen

Was ist agile Softwareentwicklung? Methodik und Bedeutung

Erfahren Sie, wie agile Softwareentwicklung funktioniert, wie die Methodik Teams unterstützt, flexibel zu arbeiten, und welche Rolle sie im DevOps-Ansatz spielt

Was ist Beobachtbarkeit? Vorteile für DevOps-Einsatz

Beobachtbarkeit (Observability) beschreibt die Fähigkeit, den Zustand von IT-Systemen oder Anwendungen mithilfe von Output, Logs und Metriken zu überwachen.

Was ist GitOps? | Überblick - Vergleich zu DevOps und CI/CD

GitOps ist ein Konzept zur Implementierung von CI/CD für cloudnative Anwendungen. Es nutzt Git als „Single Source of Truth“ für eine deklarative Infrastruktur.

Ressourcen zu DevOps

Verwandte Artikel