Anwendung entwickeln und auf einer virtuellen Maschine bereitstellen

DevOps Insights wird am 31. August 2026 das Ende des Betriebs erreichen und eingestellt werden. Continuous Delivery wird am 12. Februar 2027 in den folgenden Regionen eingestellt: au-syd, ca-tor, us-east. Code Risk Analyzer wird zu diesem Zeitpunkt ebenfalls in allen Regionen eingestellt. Wenn diese Funktionen in einer Region nicht aktiv genutzt werden, können sie in dieser Region vorzeitig eingestellt werden und es werden keine neuen Instanzen mehr akzeptiert. Weitere Informationen

In diesem Lernprogramm wird veranschaulicht, wie eine Continuous Delivery-Toolchain eingerichtet und eine einfache Anwendung (App) in einer virtuellen Maschine bereitgestellt wird. Sie können eine Quellcodeverwaltung einrichten und anschließend den Code erstellen, testen und in verschiedenen Bereitstellungsphasen bereitstellen.

Standardmäßig verwendet die Toolchain eine auf Maven basierende 'Hello World'-Beispielanwendung (App), Sie können jedoch stattdessen auch eine eigene App verwenden und eine Verbindung dazu herstellen. Diese Toolchain ist mit Pipelines für kontinuierliche Integration und kontinuierliche Bereitstellung konfiguriert und umfasst den Code Risk Analyzer, Quellcodeverwaltung, Fehlerverfolgung sowie Online-Bearbeitung.

Der Anwendungscode wird im Repository für die Anwendungsquellcodeverwaltung gespeichert. Die Build- und Bereitstellungsscripts werden im Repository für Pipeline-Quellcodeverwaltung gespeichert. Sie können die Build- und Bereitstellungsscripts so anpassen, dass sie die Entwicklungsanforderungen für die App erfüllen.

Die Toolchain in diesem Lernprogramm implementiert die folgenden bewährten Verfahren:

  • Eine Anwendungsbinärdatei wird bei jeder Git-Festschreibung erstellt und zur Verfolgbarkeit wird ein Tag auf der Basis der Buildnummer, der Zeitmarke und der Festschreibungs-ID festgelegt.
  • Die erstellte Binärdatei wird automatisch in das Bereitstellungsmanifest eingefügt.
  • Eine Object Storage-Instanz und ein Bucket werden erstellt, um die transienten Out-of-the-Box-Binärdateien zu speichern. Für fortgeschrittene Benutzer kann ein vorhandenes Artifactory-Repository konfiguriert und in die Toolchain integriert werden, um die Versionierung von Buildartefakten zu Verfolgbarkeits- und Compliancezwecken zu unterstützen.

Die Toolchain implementiert drei Pipelines für den Build und die Bereitstellung des App-Codes auf einer virtuellen Maschine.

  • CI-Pipeline (Continuous Integration, kontinuierliche Integration): Diese Pipeline wird ausgelöst, wenn eine Änderung mit dem Masterzweig des Anwendungsquellcoderepositorys zusammengeführt wird. Mit der CI-Pipeline werden der Komponententest, die Codeabdeckung und statische Scans für den Anwendungsquellcode durchgeführt. Darüber hinaus generiert die CI-Pipeline das binäre Buildartefakt und lädt es abhängig von der Konfiguration der Toolchain in das Object Storage-Bucket oder die Artifactory hoch. Die CI-Pipeline generiert außerdem die Metadaten der Buildartefakte und speichert sie im Bestandsrepository.

  • CD-Pipeline (Continuous Deployment, kontinuierliche Bereitstellung): Diese Pipeline wird durch eine erfolgreiche Ausführung der CI-Pipeline ausgelöst. Die CD-Pipeline stellt die Buildartefakte in der Bereitstellungsumgebung bereit. Die Pipeline verifiziert die erfolgreiche Bereitstellung der Anwendung durch das Ausführen einer Statusprüfung und führt ein Rollback der Änderungen durch, falls die Bereitstellung nicht erfolgreich war.

  • PR-Pipeline (Pull Request, Pull-Anforderung): Diese Pipeline wird ausgelöst, wenn im Anwendungsquellcoderepository eine Zusammenführungs- oder Pull-Anforderung erstellt wird. Normalerweise wird diese Anforderung vom Entwickler des Anwendungsquellcodes manuell erstellt, um Änderungen aus dem Entwicklungszweig mit dem Masterzweig oder einem anderen Zweig zusammenzuführen. Mit der PR-Pipeline werden der Komponententest und statische Scans für den Anwendungsquellcode durchgeführt.

caption-side=bottom"
Architektonisches

Vorbereitende Schritte

Richten Sie die Virtual Server-Instanz für die Toolchain ein und konfigurieren Sie sie für die Bereitstellung der App in der Virtual Server-Instanz. Sie können eine vorhandene Virtual Server-Instanz verwenden oder eine neu Instanz einrichten. Dabei müssen die nachfolgend beschriebenen Anforderungen erfüllt sein:

  1. Virtual Server-Instanz in IBM Cloud einrichten.
  2. Eine variable IP-Adresse reservieren, damit über das öffentliche Internet auf die Virtual Server-Instanz zugegriffen werden kann. Alternativ dazu können Sie auch den verfügbaren DNS-Eintrag verwenden. In diesem Lernprogramm wird eine variable IP-Adresse verwendet.
  3. Den Benutzer (möglichst ohne Berechtigungen) und die SSH-Schlüssel für die Virtual Server-Instanz erstellen.
  4. Sicherheitsgruppen für die Virtual Server-Instanz konfigurieren. Ermöglichen Sie die Durchführung von Statusprüfungen für die bereitgestellte App durch die Toolchain, indem Sie eine Regel für eingehenden Datenverkehr für TCP hinzufügen, damit der Port 8080 freigegeben und der Zugriff auf den App-Endpunkt möglich wird. Weitere Informationen zum Hinzufügen einer Regel für eingehenden Datenverkehr finden Sie in Sicherheitsgruppen verwalten.
  5. Stellen Sie sicher, dass Java™ SDK auf Ihrer VM installiert ist, oder verwenden Sie den folgenden Befehl, um es zu installieren: yum install -y tar java.
  6. Optional. Wenn Sie geheime Schlüssel in Key Protect speichern müssen, führen Sie eine Base64-Codierung für den Wert aus. Weitere Informationen zu den erforderlichen Befehlsdetails finden Sie unter Imagesignierung: GPG-Schlüssel generieren.

Toolchain erstellen

Zum Erstellen einer Toolchain für die Entwicklung einer Anwendung für eine virtuelle Maschine klicken Sie hier:

Toolchain erstellen

Alternativ können Sie in der Konsole IBM Cloud auf das Hamburger-Symbol Menü > Platform Automation > Toolchains klicken. Klicken Sie auf der Seite Toolchains auf Toolchain erstellen. Klicken Sie auf der Seite Toolchain erstellen auf Anwendung für eine virtuelle Maschine entwickeln.

Einfache Virtual Server-Instanz konfigurieren

  1. Überprüfen Sie auf der Registerkarte Erstellen die Standardeinstellungen.

    Toolchain-Einstellungen
    Toolchain-Einstellungen

  2. Der Name der Toolchain macht sie in IBM Cloud identifizierbar. Wenn Sie einen anderen Namen verwenden möchten, ändern Sie den Namen der Toolchain. Da der Name der Toolchain zur Bildung der URL verwendet wird, über die auf Ihre App zugegriffen wird, müssen Sie sicherstellen, dass der angegebene Name eindeutig ist.

  3. Standardmäßig erstellt die Toolchain das Quellenrepository in Git Repos and Issue Tracking. Wenn Sie einen anderen Provider für das Git-Quellenrepository verwendet möchten, z. B. GitHub oder GitLab, wählen Sie diesen in der Liste der verfügbaren Repositorys aus.

    Diese Toolchain verwendet Tools, die im Continuous Delivery-Service enthalten sind. Wenn sich noch keine Instanz dieses Service in der ausgewählten Ressourcengruppe befindet, wird sie automatisch mit dem kostenlosen Lite-Plan hinzugefügt, sobald Sie auf Erstellen klicken, um die Toolchain zu erstellen.

App-Repository konfigurieren

  1. Überprüfen Sie auf der Registerkarte Git Repos and Issue Tracking die Standardeinstellung mit der Angabe der Position des Quellcodes Ihrer App.

  2. Standardmäßig verwendet die Toolchain eine auf Maven basierende 'Hello World'-Java-Beispielapp. Sie können die Positionseinstellung so aktualisieren, dass sie stattdessen Ihre eigene App referenziert.

    caption-side=bottom"
    Anwendung

Bestandsrepository konfigurieren

Im Bestandsrepository werden die Metadaten für Builds und Artefakte gespeichert. Wenn Sie die Pipeline auslösen möchten, mit der die in der Festschreibung beschriebenen Artefakte in der Virtual Server-Instanz bereitgestellt werden, führen Sie eine Festschreibung für das Bestandsrepository durch und führen Sie dann die Zustimmungstasks aus.

Werkzeugketten-Bestandsverzeichnis
Werkzeugketten-Bestandsverzeichnis

Delivery Pipeline konfigurieren

  1. Rufen Sie die Registerkarte Delivery Pipeline auf.

    Delivery Pipeline konfiguration Konfiguration
    Delivery Pipeline

  2. Geben Sie einen vorhandenen IBM Cloud-API-Schlüssel an oder erstellen Sie einen Schlüssel. Die Toolchain verwendet diesen Schlüssel, um mit anderen Cloud-Services zu interagieren, die in die Toolchain integriert sind.

  3. Geben Sie die Region an, in der die Virtual Server-Instanz ausgeführt wird, z. B. us-south.

  4. Geben Sie die variable IP-Adresse der Virtual Server-Instanz im Format aaa.bbb.ccc.ddd an.

  5. Wählen Sie SSH Key als Authentifizierungstyp aus und geben Sie die folgenden Berechtigungsnachweise an:

    • Benutzername: Der Benutzername des Virtual Server-Instanzbenutzers mit den Berechtigungen zum Bereitstellen und Ausführen der Anwendung.
    • SSH-Schlüssel: Der private SSH-Schlüssel des Benutzers zur Ausführung und Bereitstellung der Anwendung.
  6. Führen Sie die folgenden Befehle aus, um ein neues Schlüsselpaar in der Virtual Server-Instanz für den Benutzer mit den Berechtigungen zum Bereitstellen und Ausführen der Anwendungen zu erstellen.

            # Create the SSH key
                `ssh-keygen -C cloud.ibm.com`
            # copy public key to the VSI
                `ssh-copy-id -i .ssh/id_rsa.pub <UserName>@<xx.yy.zz.aa>`
    

Optional. Konfiguration für transienten Speicher erstellen

Durch Änderungen an der Quelle wird die Continuous Integration-Pipeline ausgelöst. Wenn eine Continuous Integration-Ausführung erfolgreich ist, wird ein Build oder ein binäres Artefakt erstellt und im transienten Speicher gespeichert und anschließend in der Virtual Server-Zielinstanz bereitgestellt.

  1. Auf der Registerkarte Weitere Tools in der Toolchain können Sie entweder Object Storage oder Artifactory als transienten Speicher auswählen, in dem die Binärdateien des Build gespeichert werden.
  2. Wenn Ihr Konto keine Object Storage-Instanzen enthält, erstellt die Toolchain eine neue Object Storage-Instanz in der Standardressourcengruppe. Als nächsten Schritt erstellt die Toolchain ein Bucket, dessen Name dem der Toolchain entspricht, in der neuen Object Storage-Instanz.
  3. Enthält das Konto bereits Object Storage-Instanzen, verwendet die Toolchain eine dieser Instanzen zum Speichern der transienten Buildartefakte.
  4. Informationen zum Konfigurieren der Object Storage- oder Artifactory-Details finden Sie im Abschnitt Erweiterte Benutzeroptionen konfigurieren.
  5. Klicken Sie auf Erstellen, um die Toolchain zu erstellen.

Neue Toolchain erkunden

Nach der Erstellung der Toolchain werden alle Toolintegrationen, die Teil der Toolchain sind, in einem Diagramm dargestellt.

Pipelines erkunden

Sie können die Pipelines erkunden, um sich einen Einblick in den Toolchainablauf und die verschiedenen, innerhalb der jeweiligen Pipelines ausgeführten Operationen zu verschaffen. Wenn Sie z. B. mehrere Schritte wie cra-discovery-scan und die Details für Parameter und Status anzeigen möchten, klicken Sie auf die CI-Pipeline-Toolintegration und anschließend auf Erfolgreiche Pipelineausführungen.

CI PipelineRun
Integration PipelineRun

DevOps Insights erkunden

DevOps Insights aggregiert Daten der Toolchain, sodass Sie Ihre DevOps-End-to-End-Prozesse verfolgen und verbessern können. Sie können Qualitätsmetriken anzeigen, Build- und Bereitstellungsjobs verfolgen, Richtlinien anzeigen und mehr.

Falls Ihr Code eine Richtlinie nicht erfüllt oder mehr als erfüllt, wird die Bereitstellung gestoppt, um keine Risiken einzuführen. Sie können DevOps Insights als Sicherheitsnetz für die Continuous Delivery-Umgebung oder als Methode zur Implementierung und Verbesserung von Qualitätsstandards nutzen.

In der folgenden Abbildung ist das Qualitätsdashboard dargestellt, das Qualitätsdatensätze wie z. B. Komponententests, Codeabdeckung, Funktionstests und statische Sicherheitsscans für jede Anwendung enthält.

DevOps Insights Qualitätsanzeigetafel Qualitätsanzeigetafel
DevOps Insights

GitOps erkunden

GitOps umfasst eine Reihe von Verfahren und Tools, bei denen Git im Zentrum der DevOps-Toolchain steht und die Quelle der Bereitstellung in der Virtual Server-Instanz bildet. Mit GitOps können Entwickler und Operatoren vertraute Git-Workflows für die Definition, Überprüfung, Genehmigung und das Audit von Infrastruktur- und Anwendungsänderungen nutzen. Automatisierte Tools übernehmen das Synchronisieren des Live-Status ihrer Ziele mit dem in Git beschriebenen gewünschten Status.

Mithilfe der Toolchain in diesem Lernprogramm können Sie Bereitstellungen in mehreren Umgebungen steuern, indem Sie für jede Umgebung einen Zweig erstellen. Im folgenden Beispielworkflow wird eine Continuous Delivery-Pipeline ausgelöst, wenn eine Pull-Anforderung oder eine Festschreibung für einen bestimmten Zweig des Bestandsrepositorys erfolgt.

  1. Erstellen Sie eine Toolchain für eine Virtual Server-Instanz in IBM Cloud, indem Sie Details für die Virtual Server-Instanz, z. B. das Anwendungsrepository und Object Storage, angeben. Geben Sie keine Details für das Bestandsrepository an.
  2. Erstellen Sie nach der Erstellung der Toolchain mehrere Zweige im Bestandsrepository, z. B. Dev, Staging und Prod.
  3. Klicken Sie auf die Continuous Delivery-Pipeline und rufen Sie die Auslöser auf. Fügen Sie eine Auslöserquelle als Bestandsrepository zu dem Zweig hinzu, mit dem die CD-Pipeline ausgelöst werden soll (Masterzweig).
  4. Ändern Sie die CI-Pipeline so, dass nach einer erfolgreichen Integration eine Festschreibung im entsprechenden Bestandsrepository erfolgt.
  5. Wenn im Bestandsrepository eine ausreichende Anzahl von Festschreibungen verfügbar ist, führen Sie die Pull-Anforderung im Repository mit dem Masterzweig zusammen, um einen Continuous Delivery-Build zu starten.

Mithilfe von GitOps können Sie Bereitstellungen in mehreren Umgebungen steuern, indem Sie für jede Umgebung einen Zweig erstellen.

Erweiterte Benutzeroptionen konfigurieren

Auf der Registerkarte Weitere Tools können Sie die erweiterten Benutzeroptionen aufrufen.

  • Geben Sie eine vorhandene Cloud Object Storage-Instanz zum Speichern transienter Buildartefakte an:

    • Geben Sie den Namen des Buckets in der Object Storage-Instanz an, in dem die transienten Buildartefakte gespeichert werden sollen. Damit Objekte in das Bucket hochgeladen werden können, muss es sich in derselben Region befinden, in der auch die Toolchain erstellt wird.

    • Wählen Sie den API-Schlüssel aus, der einen Lese- und Schreibzugriff auf das von Ihnen angegebene Bucket hat.

    Cloud Object Storage Details zur Integration Details zur Integration
    Cloud Object Storage

  • Wenn Sie ein Artifactory-Konto zum Speichern transienter Buildartefakte verwenden möchten, geben Sie Details für die Artifactory-Instanz an:

    • Artifactory-Server-URL: HTTPS-URL des Artifactory-Servers
    • Typ: npm, maven oder docker
    • Artifactory-Benutzer-ID: Benutzer-ID zur Anmeldung beim Artifactory-Server im Format xxx.xxx@xxx.com
    • Artifactory-API-Schlüssel: Vom Benutzer generierter API-Schlüssel (vorhanden oder neu)
    • Release-URL: Release-URL für das Artifactory-Repository, in dem Artefakte gespeichert werden

Einige Felder in der Artifactory sind nur dann obligatorisch, wenn Sie die Artifactory-Konfiguration verwenden.

Artifactory Details zur Integration Details zur Integration
Artifactory

Klicken Sie auf Erstellen, um die Toolchain zu erstellen. Dieser Prozess kann einige Minuten in Anspruch nehmen.

Optional. Rollback zur vorherigen Version der bereitgestellten Anwendung durchführen

Aufgrund von Testergebnissen, Codequalitätsproblemen oder anderen Problemen kann es erforderlich sein, einen Rollback des bereitgestellten Codes durchzuführen. Mithilfe des Bestandsrepositorys können Sie einen Rollback zur vorherigen Version der Anwendung durchführen.

  1. Geben Sie git clone <inventory-repo-url> ein, um das Git-Bestandsrepository aus Ihrer Pipeline zu klonen und herunterzuladen. Die Continuous Delivery-Pipeline reagiert auf den Masterzweig des Bestandsrepositorys.
  2. Geben Sie git log ein, um die Liste der Festschreibungen anzuzeigen, die von der CI-Pipeline durchgeführt wurden.
  3. Geben Sie git checkout master ein, um den Masterzweig auszuchecken.
  4. Geben Sie lastCommitID=$(git log --format="%H" -n 1) ein, um die letzte Festschreibung-ID für das Repository abzurufen.
  5. Geben Sie git revert $lastCommitID ein, um eine neue Festschreibung zu erstellen, indem Sie die aktuelle Änderung rückgängig machen. Sie müssen eine Festschreibungsnachricht für diese Zurücksetzung angeben.
  6. Geben Sie git push ein, um die Änderung per Push-Operation in das Bestandsrepository zu übertragen und die Continuous Delivery-Pipeline zur Anwendungsbereitstellung zu starten.

Nächste Schritte

In diesem Lernprogramm wird eine Java-Beispielapp verwendet, es können jedoch auch Apps anderer Programmiersprachen in einer Virtual Server-Instanz bereitgestellt werden. Wenn Sie eine App, die auf einer anderen Programmiersprache basiert, in einer Virtual Server-Instanz bereitstellen möchten, löschen Sie sowohl die Toolchain als auch die Virtual Server-Instanz, die Sie für dieses Lernprogramm erstellt haben.