Startseite topics Kontinuierliche Integration Was ist Continuous Integration? 
Erkunden Sie die Lösung zur Continuous Integration von IBM Abonnieren Sie Updates rund ums Thema KI
Abbildung mit Collage von Piktogrammen von Ausrüstung, Roboterarm, Handy
Was ist Continuous Integration?

Continuous Integration ist ein Softwareentwicklungsprozess, bei dem Entwickler den neuen Code, den sie geschrieben haben, während des gesamten Entwicklungszyklus häufiger integrieren und ihn mindestens einmal täglich zur Codebasis hinzufügen.

Automatisierte Tests werden für jede Iteration des Builds durchgeführt, um Integrationsprobleme früher zu identifizieren, d. h. zu einem Zeitpunkt, zu dem sie einfacher zu beheben sind. Dieser Ansatz trägt auch dazu bei, Probleme bei der endgültigen Zusammenführung für das Release zu vermeiden. Insgesamt trägt die Continuous Integration dazu bei, den Erstellungsprozess zu rationalisieren, was zu einer qualitativ hochwertigeren Software und vorhersehbareren Bereitstellungsplänen führt.

Das Unternehmenshandbuch zur Beobachtbarkeit

Vertiefen Sie Ihr Wissen über Observability, erkennen Sie ihre Bedeutung und den Unterschied zwischen Überwachung und APM.

Ähnliche Inhalte

Registrieren Sie sich für den TEI-Bericht über IBM Robotic Process Automation

Continuous Integration und DevOps

Per Definition beschreibt DevOps einen Softwareentwicklungsprozess und eine Veränderung der Unternehmenskultur. Dieser Prozess beschleunigt die Bereitstellung qualitativ hochwertigerer Software durch die Automatisierung und Integration der Arbeit von Entwicklungs- und IT-Betriebsteams. Traditionell arbeiteten diese beiden Gruppen getrennt voneinander oder in Silos.

In der Praxis gehen die besten DevOps-Prozesse und -Kulturen über die Entwicklung und den Betrieb hinaus. Zu dieser Gruppe gehören Plattform- und Infrastrukturtechnik, Sicherheit, Compliance, Governance, Risikomanagement, Geschäftsbereiche, Endnutzer und Kunden. Die Gruppe bezieht die Beiträge aller Anwendungsstakeholder in die Softwareentwicklung ein. 

Im DevOps-Framework steht die kontinuierliche Integration am Anfang des Softwareentwicklungsprozesses. Hier geben Sie Ihren Code mindestens einmal täglich ein, um zu verhindern, dass sich Ihre lokalen Kopien zu weit vom Hauptzweig des Code-Builds entfernen. Dieser Ansatz hilft Ihnen, katastrophale Zusammenführungskonflikte zu vermeiden, die den Build zerstören könnten und für deren Lösung das Team möglicherweise Stunden oder Tage braucht.

Die Continuous Integration dient als Voraussetzung für die Test-, Bereitstellungs- und Release-Phasen der kontinuierlichen Bereitstellung. Das gesamte Entwicklungsteam weiß innerhalb von Minuten nach der Eingabe, ob Sie fehlerhaften Code erstellt haben, da der kontinuierliche Integrationsdienst Ihre Codeänderungen automatisch umsetzt und auf Fehler testet.

Continuous Integration (CI) versus Continuous Delivery (CD) versus Continuous Deployment

Auf die Continuous Integration folgen im DevOps-Zyklus die Continuous Delivery und die Continuous Deployment. 

Continuous Delivery (CD) setzt dort an, wo die Continous Integration endet, und automatisiert die Bereitstellung von Anwendungen in ausgewählten Infrastrukturumgebungen. CD konzentriert sich darauf, alle validierten Änderungen an der Codebasis – Updates, Fixes und sogar neue Funktionen – so schnell und sicher wie möglich an die Nutzer weiterzugeben. Es gewährleistet die Automatisierung der Übertragung von Codeänderungen in verschiedene Umgebungen wie Entwicklung, Test und Produktion.

Bei der Continuous Deployment werden die Codeänderungen einer Anwendung automatisch in die Produktionsumgebung veröffentlicht. Diese Automatisierung wird durch eine Reihe vordefinierter Tests gesteuert. Sobald neue Updates diese Tests bestehen, sendet das System die Updates direkt an die Nutzer der Software.

Vorteile der Continuous Integration

Zu den häufig genannten Vorteilen der Continuous Integration gehören:

  • Frühe und verbesserte Fehlererkennung und Kennzahlen, mit denen Sie Fehler frühzeitig beheben können – manchmal innerhalb von Minuten nach der Code-Eingabe

  • Kontinuierliche und nachweisliche Fortschritte für verbessertes Feedback

  • Verbesserte Teamzusammenarbeit; jeder im Team kann den Code ändern, das System integrieren und Konflikte mit anderen Teilen der Software schnell feststellen

  • Verbesserte Systemintegration, die Überraschungen am Ende des Softwareentwicklungszyklus reduziert

  • Weniger parallele Änderungen für Zusammenführung und Tests

  • Reduzierte Fehlerzahl bei Systemtests

  • Immer aktuelle Systeme zum Testen
Continuous Integration und Agilität

Agilität ist eine Softwareentwicklungspraxis, die die Art und Weise verbessert, wie sich Softwareentwicklungsteams organisieren, sich an veränderte Anforderungen anpassen und Software veröffentlichen. Continuous Integration (Link befindet sich außerhalb von IBM) und Agile Entwicklung beinhalten viele gleiche Funktionen, zum Beispiel die Testautomatisierung. Daher ist es manchmal sinnvoll, kontinuierliche Integration und Agilität gemeinsam zu besprechen.

Agilität organisiert die Entwicklung in kleinere Arbeitsgruppen oder Sprints. Bei der Anwendung von DevOps tragen diese kombinierten Praktiken dazu bei, Softwarequalität und Projektflexibilität zu gewährleisten.

Bei der Continuous Integration müssen Sie Ihre Arbeit häufig, oft sogar mehrmals täglich, integrieren. Sie überprüfen die Integration durch einen automatisierten Build, der Integrationsfehler so früh wie möglich erkennt. Der Build sollte Ausführungstests als Teil der Überprüfung umfassen. Die Erweiterung der Schnelltests auf Laufzeittests in einer automatisierten Testumgebung führt auf natürliche Weise zu einer kontinuierlichen Bereitstellung.

Agilität (Link befindet sich außerhalb von IBM) ist zudem iterativ und passt sich an Veränderungen an, sodass Lösungen im Laufe der Zeit skaliert und weiterentwickelt werden können. Im Kontext der Continuous Integration geht es bei der agilen Softwareentwicklung darum, Softwareiterationen auf der Grundlage dessen bereitzustellen, wie Sie den Wert der Funktionen im Rahmen der kontinuierlichen Integration priorisieren.

Open-Source-Tools für die kontinuierliche Integration

Zu den beliebten Open-Source-Tools für die kontinuierliche Integration gehören:

  • Jenkins: Jenkins, ein weit verbreitetes Open-Source-Tool für Continuous Integration, ermöglicht es Entwicklern, Code automatisch zu erstellen, zu integrieren und zu testen, sobald sie ihn in das Quell-Repository übertragen. Dieser Prozess erleichtert es Entwicklern, Fehler frühzeitig zu erkennen und Software schneller bereitzustellen. Das Docker-Plug-In ist auf Jenkins verfügbar.

  • Buildbot: Buildbot kann alle Aspekte des Softwareentwicklungszyklus automatisieren. Als Job-Scheduling-System stellt es Jobs in die Warteschlange, führt sie aus und meldet Ergebnisse.

  • Go: Was Go von der Masse abhebt, ist das Konzept von Pipelines, das die Modellierung komplexer Build-Workflows vereinfacht.

  • Travis CI: Eine der ältesten und vertrauenswürdigsten gehosteten Lösungen, die auch in einer On-Premises-Version für Unternehmen verfügbar ist.

  • GitLab CI: GitLab CI ist ein integraler Bestandteil des Open-Source-Rails-Projekts und ein kostenloser gehosteter Dienst. Dieses Tool bietet eine detaillierte Git-Repository-Verwaltung mit Funktionen wie Zugriffskontrolle, Problemverfolgung, Code-Reviews und mehr.

Die Durchführung einer Continuous Integration mit Open-Source-Tools bietet viele Vorteile, darunter:

  • Hunderte Plug-ins, die Ihr Projekt unterstützen können

  • Umfassende Unterstützung für Open-Source-Sprachen wie Python, Java und JavaScript

  • Keine Kosten, das gibt Studenten, Startups und Entwicklern, die nebenbei arbeiten, ein leistungsstarkes Tool an die Hand, das das Budget schont

  • Anpassbarkeit, sodass Entwickler die Grundlage eines CI-Tools nutzen und darauf aufbauen können, um dem Bedarf gerecht zu werden

  • Die Möglichkeit, die Tools zu ändern und weiterzuverbreiten

Zu den Open-Source-Tools für die Continuous Integration, die Sie für Ihren Softwareentwicklungs-Workflow in Betracht ziehen sollten, gehören Jenkins, Go, Buildbot und Travis CI, über die Sie im nächsten Abschnitt mehr lesen können.

Server für die kontinuierliche Integration

Ein Server für Continuous Integration (CI-Server) ist ein Softwaretool, das alle Ihre kontinuierlichen Integrationsvorgänge zentralisiert und Ihnen eine zuverlässige, stabile Plattform zum Erstellen Ihrer Projekte bietet. Sie können CI-Server konfigurieren und anpassen, um verschiedene Projekte für verschiedene Plattformen zu erstellen. Ein CI-Server modelliert und visualisiert auf einfache Weise komplexe Workflows (und ermöglicht so eine kontinuierliche Lieferung) und bietet eine intuitive Schnittstelle für die Erstellung von kontinuierlichen Delivery Pipelines. Mit einem CI-Server können Sie Folgendes tun:

  • Automatische Builds, Tests und Releases an einem einzigen Ort ausführen

  • Jederzeit und überall eine beliebige Version bereitstellen

  • Die Konfiguration in Ordnung halten

  • Plug-ins zur Verbesserung der Funktionalität unterstützen

  • Das Repository Ihres Projekts überwachen

  • Änderungen abrufen und Aufgaben ausführen, die Sie für einen erfolgreichen Commit definiert haben

  • Feedback mit Details zum Build an die relevanten Projektmitglieder senden
Ein Anwendungsfall für Continuous Integration

Betrachten Sie einmal diesen hypothetischen Anwendungsfall, der veranschaulicht, wie zwei Softwareentwickler Continuous Integration nutzen können, um ihren DevOps-Prozess zu verbessern.

Die beiden Entwickler müssen miteinander besprechen, welche Funktionen wie funktionieren. Dieses kleine Team benötigt regelmäßige Updates und muss in der Lage sein, seinen Code als Ganzes zu integrieren und zu testen. Das Planen des Eingebens und Testens von Code nimmt viel Entwicklungszeit in Anspruch. Sie brauchen ein automatisches System für Continuous Integration.

Ein Verhandeln darüber, wann diese Kombinationen und Tests stattfinden sollten, würde viel Zeit der Entwickler verschlingen. Sie müssten über Folgendes eine Einigung treffen:

  1. Wann mit dem Testen der Codeintegration begonnen werden sollte
  2. So testen Sie, ob die Integration erfolgreich war
  3. Wie man die Ergebnisse dem Team mitteilt

Plattformen zur Continuous Integration haben Standardantworten auf diese Fragen und die meisten ermöglichen eine Konfiguration und Einrichtung.

Normalerweise beginnen CI-Plattformen wie Jenkins mit Integrationstests bei der Eingabe. Wenn neuer Code eingegeben wird, führt das CI-System eine Reihe von Tests durch, die Einheitentests und Regressionstests enthalten können, und bestimmt dann, ob der Code erfolgreich integriert wurde.

Wenn Sie eine kompilierte Sprache verwenden, bezieht sich der Standardtest darauf, ob der Code erfolgreich kompiliert wurde. Wenn nicht, hat der neue Code den Build zerstört. Für Sprachen wie Python oder JavaScript müssen Sie Ihren eigenen Integrationstest erstellen.

In jedem Fall protokollieren die meisten CI-Systeme Integrationsversuche, Erfolgsrate und andere Metriken.

Tests und Best Practices

Die Bedeutung des Testens

Kontinuierliche Tests beginnen mit der Erstellung eines Builds zur Continuous Integration und eines Pakets (auch als installierbare Entität oder verpackte Entität bezeichnet). Sie enden, wenn diese verpackte Entität in die Produktion geht. Jeder Schritt von Anfang bis Ende beinhaltet eine Testsuite.

Wenn Sie nur eine Testphase haben, bestehen mindestens 30 % der kontinuierlichen Integration aus Tests. In der Realität bestehen kontinuierliche Integrationsaktivitäten zu 50 bis 70 % aus Tests. Früher mussten Sie die Tests manuell durchführen. Jetzt können Sie automatisierte Tests verwenden – der Schlüssel zur erfolgreichen Continuous Integration.

Im Rahmen der Automatisierung von Tests für die Continuous Integration wird bei der testgetriebenen Entwicklung iterativ Code erstellt und ein Anwendungsfall nach dem anderen getestet. Dieser Ansatz stellt sicher, dass die Tests alles Gewünschte abdecken, verbessert die Codequalität und schafft die Grundlage für eine kontinuierliche Lieferung. Automatisierte Tests geben Aufschluss darüber, ob neuer Code einen oder mehrere der in allen Funktionsbereichen der Anwendung entwickelten Tests nicht bestanden hat.

Eine bewährte Methode erfordert, dass Entwickler alle oder einen Teil der Tests in ihren lokalen Umgebungen ausführen. Diese Vorgehensweise stellt sicher, dass Entwickler den Quellcode erst dann der Versionskontrolle übergeben, wenn die neuen Codeänderungen ihre Tests bestanden haben. Die Erfahrung zeigt, dass effektive Regressionstests helfen können, spätere unliebsame Überraschungen zu vermeiden.

Die Continuous Integration Pipeline

Eine Continuous Integration Pipeline automatisiert Phasen der Projektpipeline — wie Builds, Tests und Bereitstellungen— auf wiederholbare Weise und mit minimalem menschlichem Eingreifen. Eine automatisierte Pipeline für Continuous Integration ist unerlässlich, um die Entwicklung, das Testen und die Bereitstellung Ihrer Anwendungen durch das Ermöglichen von Kontrollen, Prüfpunkten und Geschwindigkeit zu optimieren.

Best Practices für die kontinuierliche Integration

Der Continuous Integration Prozess ist eine entscheidende Komponente von DevOps, die Ihnen hilft, für Ihre Entwicklungs- und Betriebsteams ein gemeinsames Repository für die Codierung, das Testen, die Bereitstellung und die Unterstützung von Software bereitzustellen. Zu den Best Practices für CI, die Ihnen zum Erfolg verhelfen können, gehören:

  • Verwaltung eines einzelnen Quellcode-Repositorys: Verwenden Sie die Quellcodeverwaltung, um alle Dateien für die Erstellung eines Produkts nachzuverfolgen und zu steuern. Diese konsolidierte Codebasis erleichtert die Verteilung und Sichtbarkeit.

  • Automatisierung des Builds: Diese Vorgehensweise umfasst das Kompilieren, Verknüpfen und andere Prozesse, die Build-Artefakte erzeugen. Selbsttests sollten ebenfalls automatisiert werden.

  • Verwendung täglicher Mainline-Commits: Zwingen Sie die Entwickler, ihre Änderungen mindestens einmal pro Tag in den Hauptentwicklungsstream zu übertragen. Jeder Entwickler muss überprüfen, ob seine Arbeitskopie mit dem Hauptentwicklungsstream übereinstimmt.

  • Testen in einem Klon der Produktionsumgebung: Gleichen Sie die Testumgebung Ihrer endgültigen Produktionsumgebung so weit wie möglich an.

  • Automatisieren der Bereitstellung: Implementieren Sie mehrere Umgebungen (Entwicklung, Integration, Produktion), um Builds und Tests auszuführen.
Weiterführende Lösung
IBM UrbanCode Build

Mit dem IBM UrbanCode Build-Tool, einer auf Unternehmen abgestimmten Build-Management-Lösung, die ein vorlagengestütztes System verwendet, lassen sich Software-Builds einfacher konfigurieren und ausführen.

IBM UrbanCode Build erkunden
Ressourcen Was ist DevOps?

DevOps beschleunigt die Bereitstellung qualitativ hochwertigerer Software, indem es die Arbeit von Softwareentwicklungs- und IT-Teams kombiniert und automatisiert.

Was ist Continuous Delivery?

Continuous Delivery automatisiert die Lieferung von Anwendungen an Test- und Produktionsumgebungen.

Was ist CI/CD und die CI-/CD-Pipeline?

Ein praktischer Leitfaden zur CI-/CD-Pipeline.

Machen Sie den nächsten Schritt

Sind Sie bereit für DevOps? Um Software und Services mit der vom Markt geforderten Geschwindigkeit bereitzustellen, müssen Teams schnell iterieren und experimentieren, regelmäßig neue Versionen bereitstellen und sich von Feedback und Daten leiten lassen. Die erfolgreichsten Cloud-Entwicklungsteams setzen auf moderne DevOps-Kultur und -Praktiken sowie cloudnative Architekturen und stellen Toolchains aus erstklassigen Tools zusammen, um ihre Produktivität zu steigern.

DevOps-Lösungen erkunden Kostenlos testen