Auf einen Blick: Das Erstellen einer CI/CD-Pipeline mit Jenkins automatisiert die Softwareentwicklung und verbessert Effizienz und Qualität. Wichtige Schritte umfassen die Installation von Jenkins, die Konfiguration von Pipelines und die Ausführung von Builds mit verschiedenen Plugins für Flexibilität.
- Jenkins ermöglicht die Visualisierung von Pipeline-Phasen und die Integration mit mehreren Werkzeugen.
- Beispiele für cloudbasierte CI/CD-Pipelines, wie Azure DevOps, veranschaulichen optimierte Abläufe.
Eine effektive kontinuierliche Integration (CI) und Continuous Delivery (CD) Pipeline ist für moderne DevOps-Teams unerlässlich, um mit der sich schnell wandelnden Technologielandschaft zurechtzukommen. In Kombination mit agilen Konzepten kann eine feine CI/CD-Pipeline den Softwareentwicklungszyklus optimieren und zu hochwertigerer Software mit schnellerer Bereitstellung führen.
In diesem Artikel werde ich Folgendes besprechen:
- Was man wissen sollte, bevor man eine CI/CD-Pipeline aufbaut
- Beispiel für eine CI/CD-Pipeline von Jenkins
- Schritte zum Aufbau einer Jenkins-Pipeline
- Azure CI/CD-Pipeline-Beispiel
- Und noch mehr!
Was Sie wissen sollten, bevor Sie Ihre CI/CD-Pipeline aufbauen
Was ist eine CI/CD-Pipeline?
Das Hauptziel einer CI/CD-Pipeline ist die Automatisierung des Softwareentwicklungslebenszyklus (SDLC).
Die Pipeline deckt viele Aspekte eines Softwareentwicklungsprozesses ab, vom Schreiben des Codes und Tests bis hin zur Lieferung und Bereitstellung. Einfach ausgedrückt integriert eine CI/CD-Pipeline Automatisierung und kontinuierliches Monitoring in den Entwicklungslebenszyklus. Diese Art von Pipeline, die alle Phasen des Softwareentwicklungslebenszyklus umfasst und jede Stufe verbindet, wird zusammen als CI/CD-Pipeline bezeichnet.
Sie reduziert manuelle Aufgaben für das Entwicklungsteam , was wiederum die Anzahl menschlicher Fehler reduziert und gleichzeitig schnelle Ergebnisse liefert. All dies trägt zur höheren Produktivität des Delivery-Teams bei.
(Erfahren Sie mehr über Stufen in einer CI/CD-Pipeline, Bereitstellungspipelines und die Rolle von CI/CD.)
Was ist Jenkins?
Jenkins ist ein Open-Source-Server für kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD), der die Build-, Test- und Deployment-Phasen der Softwareentwicklung automatisiert. Mit zahlreichen Plugins, die Sie leicht integrieren können, sowie der Auswahl an Werkzeugen, Programmiersprachen und Cloud-Umgebungen ist Jenkins äußerst flexibel und erleichtert die effiziente Entwicklung zuverlässiger Anwendungen.
Warum Jenkins für CI/CD verwenden
Sie fragen sich vielleicht, warum Jenkins eine gute Option für den Aufbau Ihrer CI/CD-Pipeline ist. Hier sind einige der Gründe, warum es beliebt ist:
- Umfassende Plugin-Unterstützung: Was auch immer du machen möchtest, es gibt wahrscheinlich bereits ein Plugin dafür, das deine Arbeit beschleunigt und vereinfacht.
- Aktive Open-Source-Community: Lizenzfrei zu sein ist erst der Anfang. Sie wird von einer aktiven Community unterstützt, die Lösungen, Ratschläge, Ideen und Tutorials beisteuert.
- Plattformunabhängig: Sie sind nicht an ein bestimmtes Betriebssystem gebunden.
- Skalierbar: Du kannst Knoten nach Bedarf hinzufügen und sogar Builds auf verschiedenen Rechnern mit unterschiedlichen Betriebssystemen ausführen.
- Integrierbar: Welche Tools Sie auch immer verwenden, Sie können sie wahrscheinlich mit Jenkins verwenden.
- Bewährt: Jenkins war eines der ersten CI/CD-Tools und ist daher bewährt und zuverlässig.
Beispiel für eine CI/CD-Pipeline von Jenkins
Wie sieht eine CI/CD-Pipeline aus, die mit Jenkins gebaut wurde? Hier ist ein einfacher Prozess der Webanwendungsentwicklung.
- Der Entwickler schreibt den Code und legt die Änderungen in ein zentrales Code-Repository ein.
- Wenn das Repository eine Änderung erkennt, wird der Jenkins-Server ausgelöst.
- Jenkins erhält den neuen Code und führt den automatisierten Build und das Testen durch. Wenn beim Bauen oder Testen Probleme festgestellt werden, informiert Jenkins das Entwicklungsteam automatisch über eine vorkonfigurierte Methode wie E-Mail oder Slack.
- Das endgültige Paket wird für die Produktionsbereitstellung auf AWS Elastic Beanstalk, einen Anwendungsorchestrierungsdienst, hochgeladen.
- Elastic Beanstalk verwaltet die Bereitstellung der Infrastruktur, die Lastverteilung und die Skalierung des erforderlichen Ressourcentyps wie EC2, RDS oder andere.
Die Werkzeuge, Prozesse und die Komplexität einer CI/CD-Pipeline unterscheiden sich von diesem Beispiel. Vieles hängt von Ihren Entwicklungsanforderungen und den Geschäftsanforderungen Ihrer Organisation ab. Typische Optionen sind eine einfache vierstufige Pipeline und eine mehrstufige parallele Pipeline – einschließlich mehrerer Builds, verschiedener Testphasen (Rauchtest, Regressionstest, Nutzerakzeptanztest) und einer Multichannel-Bereitstellung (Web, mobil).
8 Schritte zum Aufbau einer CI/CD-Pipeline mit Jenkins
In diesem Abschnitt zeige ich, wie man eine einfache CI/CD-Pipeline mit Jenkins konfiguriert.
Bevor Sie beginnen, stellen Sie sicher, dass Jenkins mit den erforderlichen Abhängigkeiten korrekt konfiguriert ist. Sie sollten außerdem ein grundlegendes Verständnis der Jenkins-Konzepte haben. In diesem Beispiel ist Jenkins in einer Windows-Umgebung konfiguriert.
Schritt 1: Installieren Sie Jenkins
Laden Sie Jenkins von der offiziellen Website herunter und installieren Sie es. Installieren Sie Jenkins mit folgendem Docker-Befehl:
docker run -d -p 8080:8080 jenkins/jenkins:lts
Schritt 2: Konfigurieren Sie Jenkins und fügen Sie notwendige Plugins hinzu
Die Konfiguration von Jenkins ist eine Frage der Auswahl der benötigten Plugins. Git und Pipeline sind häufig verwendete Tools, die du von Anfang an hinzufügen möchtest.
Schritt 3: Jenkins öffnen
Melden Sie sich bei Jenkins an und klicken Sie auf "Neuer Artikel".
Schritt 4: Benenne die Pipeline
Wählen Sie im Menü die Option "Pipeline" aus, geben Sie einen Namen für die Pipeline an und klicken Sie auf "OK".
Schritt 5: Konfigurieren Sie die Pipeline
Wir können die CI/CD-Pipeline im Pipeline-Konfigurationsbildschirm konfigurieren. Dort können wir Build-Trigger und andere Optionen für die Pipeline festlegen. Der wichtigste Abschnitt ist der Abschnitt "Pipeline Definition", in dem man die Phasen der Pipeline definieren kann. Pipeline unterstützt sowohl deklarative als auch geskriptete Syntaxen.
(Weitere Details finden Sie in der offiziellen Jenkins-Dokumentation.)
Verwenden wir das Beispiel-Pipeline-Skript "Hello World":
pipeline {
agent any
stages {
stage('Hello') {
steps {
echo 'Hello World'
}
}
}
}
Klicken Sie auf Apply and Save. Sie haben eine einfache Pipeline konfiguriert!
Schritt 6: Führen Sie die Pipeline aus
Klicken Sie auf "Jetzt bauen", um die Pipeline auszuführen.
Dies führt dazu, dass die Pipeline-Stufen ausgeführt werden und das Ergebnis im Abschnitt "Stage View" angezeigt wird. Wir haben nur eine einzelne Pipeline-Stufe konfiguriert, wie hier angegeben:
Wir können überprüfen, dass die Pipeline erfolgreich ausgeführt wurde, indem wir die Konsolenausgabe für den Build-Prozess überprüfen.
Schritt 7: Erweitern Sie die Pipeline-Definition
Erweitern wir die Pipeline, indem wir zwei weitere Stufen zur Pipeline hinzufügen. Dafür klicken Sie auf die Option "Konfigurieren" und ändern Sie die Pipeline-Definition gemäß dem folgenden Codeblock.
pipeline {
agent any
stages {
stage('Stage #1') {
steps {
echo 'Hello World'
sleep 10
echo 'This is the First Stage'
}
}
stage('Stage #2') {
steps {
echo 'This is the Second Stage'
}
}
stage('Stage #3') {
steps {
echo 'This is the Third Stage'
}
}
}
}
Speichere die Änderungen und klicke auf "Jetzt bauen", um die neue Pipeline auszuführen. Nach erfolgreicher Ausführung können wir jede neue Stufe in der Stage-Ansicht sehen.
Die folgenden Konsolenprotokolle bestätigen, dass der Code wie erwartet ausgeführt wurde:
Schritt 8: Visualisieren Sie die Pipeline
Wir können das Plugin "Pipeline Timeline" verwenden, um die Pipeline-Phasen besser zu visualisieren. Installieren Sie einfach das Plugin, und innerhalb der Build-Phase finden Sie eine Option namens "Build Timeline".
Klicken Sie auf diese Option, und Sie erhalten eine Zeitleiste der Pipeline-Ereignisse, wie unten gezeigt.
Das war's! Du hast erfolgreich eine CI/CD-Pipeline in Jenkins konfiguriert.
Der nächste Schritt nach der Konfiguration Ihrer Jenkins-Pipeline besteht darin, Jenkins-Pipelines mit Control-M zu orchestrieren – indem Sie Enterprise Scheduling, SLA-Management und Abhängigkeitskoordination für die Produktionsdaten und Anwendungsworkflows hinzufügen, die Jenkins-Deployments auslösen.
- Externe Code-Repositorien
- Testrahmen
- Einsatzstrategien
Viel Glück!
Cloudbasiertes Azure CI/CD-Pipeline-Beispiel
Mit der zunehmenden Verbreitung von Cloud-Technologien ist der wachsende Trend, die DevOps-Aufgaben in die Cloud zu verlagern. Cloud-Service-Anbieter wie Azure und AWS bieten eine vollständige Service-Suite an, um alle erforderlichen DevOps-Aufgaben über ihre jeweiligen Plattformen zu verwalten.
Im Folgenden ist eine einfache cloudbasierte DevOps CI/CD-Pipeline, die vollständig auf Azure (Azure DevOps Services) Tools basiert.
- Ein Entwickler ändert bestehenden Quellcode oder erstellt neuen Quellcode und commitiert die Änderungen dann in Azure Repos.
- Diese Repo-Änderungen lösen die Azure-Pipeline aus.
- Mit der Kombination von Azure Test Plans erstellt und testet Azure Pipelines die neuen Codeänderungen. (Dies ist der Prozess der kontinuierlichen Integration.)
- Azure Pipelines löst dann die Bereitstellung erfolgreich getesteter und gebauter Artefakte in den erforderlichen Umgebungen mit den notwendigen Abhängigkeiten und Umgebungsvariablen aus. (Dies ist der Prozess der kontinuierlichen Bereitstellung.)
- Artefakte werden im Azure Artifacts-Dienst gespeichert, der als universelles Repository fungiert.
- Azure-Anwendungsüberwachungsdienste bieten den Entwicklern Echtzeit-Einblicke in die bereitgestellte Anwendung, wie Gesundheitsberichte und Nutzungsinformationen.
Zusätzlich zur CI/CD-Pipeline ermöglicht Azure auch die Verwaltung des SDLC mit Azure Boards als agilem Planungstool. Hier haben Sie zwei Möglichkeiten:
- Manuell eine vollständige CI/CD-Pipeline konfigurieren
- Wählen Sie eine SaaS-Lösung wie Azure DevOps oder DevOps Tooling by AWS
CI/CD-Pipelines minimieren manuelle Arbeit
Eine richtig konfigurierte Pipeline erhöht die Produktivität des Delivery-Teams, indem sie die manuelle Arbeitslast reduziert und die meisten manuellen Fehler eliminiert und gleichzeitig die Gesamtproduktqualität erhöht. Dies führt letztlich zu einem schnelleren und agileren Entwicklungszyklus, der Endanwendern, Entwicklern und dem gesamten Unternehmen zugutekommt.
Lernen Sie aus den Entscheidungen, die Humana bei der Auswahl einer modernen Mainframe-Entwicklungsumgebung für das Bearbeiten und Debuggen von Code getroffen hat, um deren Geschwindigkeit, Qualität und Effizienz zu verbessern.
Verwandte Literatur
DevOps-Leitfaden
- Was ist DevOps? Eine umfassende Einführung
- Eine kurze Geschichte von DevOps
- Einführung in die DevOps-Architektur
- Automatisierung in DevOps: Warum und wie man DevOps-Praktiken automatisiert
- Was ist CI/CD? Kontinuierliche Integration und kontinuierliche Lieferung erklärt
- Wie man eine CI/CD-Pipeline mit Jenkins aufbaut
- DevOps-Metriken zur Optimierung von CI/CD-Pipelines
- Kontinuierliche Liefermetriken
- Ist Continuous Integration in Continuous Deployment ein Fortschritt – oder nicht?
- Unterschiede zwischen Continuous Integration (CI), Delivery (CD) und Deployment
- Quellcode und Versionskontrolle in DevOps
- Was ist kontinuierliche Testung?
- Testautomatisierungs-Frameworks: Der ultimative Leitfaden
- Release Management in DevOps
- Erklärt: Monitoring & Telemetrie in DevOps
- Anwendungs-Leistungsmanagement in DevOps
- DevOps-Orchestrierung im SDLC
- Einführung in Datenbank-DevOps
- Die Rolle der Microservices in DevOps
- Die Rolle der Virtualisierung in DevOps
- Container & DevOps: Wie Container in DevOps-Lieferpipelines passen
- Was ist eine Containerpipeline?
- Was ist eine DevOps-Toolchain?
- Verwaltung von Containern und Code für DevOps
- Die Rolle von Agile in DevOps
- Die Rolle der Cloud in DevOps
- Was ist FinDevOps?
- Top-DevOps-Trends im Jahr 2022
- DevOps-Werte & Prinzipien
- DevOps-Kennzahlen und KPIs
- DevOps-Ratschläge für kleine, mittlere und große Organisationen
- DevOps-Teamstruktur
- Top-DevOps-Bücher, die man heute lesen sollte
- Buchrezension von The Phoenix Project: DevOps For Everyone
- DevOps-Influencer: 11 DevOps-Experten, denen Sie auf Twitter folgen können
- GitHub, GitLab, Bitbucket & Azure DevOps: Was ist der Unterschied?
- Best Practices: Wie man Anwendungen für Kubernetes architekt
- Konfigurationsmanagement in DevOps
- DevOps-Verzweigungsstrategien erklärt
- DevOps-Jobbezeichnungen, Rollen und Verantwortlichkeiten
- Testen in DevOps: Konzepte, Best Practices und mehr
- Der vollständige DevOps-Zertifizierungsleitfaden für 2022
- Was ist das Kubernetes-Operator-Muster?
Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.