App aus Repository-Quellcode bereitstellen

Sie können Ihre Anwendung direkt aus Quellcode, der sich in einem Git-Repository befindet, mit der IBM Cloud® Code Engine-Konsole und der -CLI implementieren. Finden Sie heraus, welche Vorteile das Erstellen Ihres Image mit Code Engine bietet.

App aus Repository-Quellcode über die Konsole implementieren

Sie können Ihre Anwendung direkt über den Quellcode in der Konsole bereitstellen.

Zur Vorbereitung sollten Sie einen Plan für Ihren Build erstellen. Sie können auch nach Tipps für die Erstellung einer Dockerfile suchen.

Code Engine kann automatisch Images in IBM Cloud® Container Registry-Namensbereiche in Ihrem Konto übertragen (hochladen) und sogar einen Namensbereich für Sie erstellen. Informationen zum Hochladen von Images in ein anderes Container Registry-Benutzerkonto oder in ein privates Docker Hub-Konto finden Sie unter Auf Container-Registrys zugreifen.

Weitere Informationen zu erforderlichen Berechtigungen für den Zugriff auf Image-Registrys finden Sie unter Berechtigungen für Image-Registrys konfigurieren.

  1. Öffnen Sie die Code Engine-Konsole.
  2. Wählen Sie „ Mit der Erstellung beginnen “.
  3. Wählen Sie ein Projekt aus der Liste der verfügbaren Projekte aus. Sie können auch ein neues erstellen. Bitte beachten Sie, dass Sie über ein ausgewähltes Projekt verfügen müssen, um eine Anwendung bereitstellen zu können.
  4. Wählen Sie Anwendung aus.
  5. Geben Sie einen Namen für die Anwendung ein. Verwenden Sie einen Namen für die Anwendung, der innerhalb des Projekts eindeutig ist.
  6. Wählen Sie „ Container-Image aus Quellcode erstellen “ aus.
  7. Klicken Sie auf Builddetails angeben.
  8. Wählen Sie ein Quellenrepository aus, z. B. https://github.com/IBM/CodeEngine. Da Sie eine Beispielquelle verwenden, für die keine Berechtigungsnachweise erforderlich sind, wählen Sie None für den Zugriff auf das Code-Repository aus. Sie können optional einen Verzweigungsnamen angeben. Wenn Sie keinen Verzweigungsnamen angeben und das Feld leer lassen, verwendet Code Engine automatisch die Standardverzweigung des angegebenen Repositorys. Klicken Sie auf Weiter (Next).
  9. Wählen Sie eine Strategie für Ihren Build sowie Ressourcen für Ihren Build aus. Weitere Informationen zu Buildoptionen finden Sie im Abschnitt Build planen. Klicken Sie auf Weiter.
  10. Wählen Sie eine Position für die Container-Registry aus, z. B. IBM Registry Dallas, um anzugeben, wo das Image Ihrer Buildausgabe gespeichert werden soll. Wenn Ihre Registry privat ist, müssen Sie den Zugriff auf diese Registry einrichten.
  11. Geben Sie Registryinformationen dazu an, wo das Image Ihrer Buildausgabe gespeichert werden soll. Wählen Sie ein vorhandenes Registry-Geheimnis aus oder erstellen Sie ein neues. Wenn Sie Ihr Image in einer Container Registry-Instanz erstellen, die sich in Ihrem Konto befindet, können Sie Code Engine managed secret auswählen und Code Engine den geheimen Schlüssel für Sie erstellen und verwalten lassen.
  12. Wählen Sie einen Namensbereich, einen Namen und einen Tag für Ihr Image aus. Wenn Sie Ihr Image in einer IBM Cloud Container Registry-Instanz erstellen, die sich in Ihrem Konto befindet, können Sie einen vorhandenen Namensbereich auswählen oder Code Engine den Namensbereich für Sie erstellen und verwalten lassen.
  13. Klicken Sie auf Fertig.
  14. Ändern Sie alle Laufzeiteinstellungen bzw. Umgebungsvariablen für Ihre App. Weitere Informationen zu diesen Optionen finden Sie unter Optionen für Endpunktsichtbarkeit von Apps und Optionen für die Bereitstellung einer App.
  15. Klicken Sie auf Erstellen.
  16. Nach dem Übergeben der Buildausführung wird das Container-Image an Container Registry gesendet und anschließend wird das Image von der Anwendung mit einer Pull-Operation extrahiert und bereitgestellt. Nachdem sich der Anwendungsstatus in Bereit geändert hat, können Sie die Anwendung testen. Klicken Sie auf Anwendung testen und klicken Sie anschließend im Teilfenster 'Anwendung testen' auf Anforderung senden. Um die Anwendung in einer Webseite zu öffnen, klicken Sie auf Anwendungs-URL.

Buildausführungen, die abgeschlossen werden, werden letztendlich automatisch gelöscht. Wenn Ihre Buildausführung auf der Buildkonfiguration basiert, wird diese Buildausführung nach 3 Stunden gelöscht, wenn die Buildausführung erfolgreich ist. Wenn der Build-Lauf nicht erfolgreich ist, wird dieser Build-Lauf nach 48 Stunden gelöscht.

Nachdem Sie Ihre Anwendung bereitgestellt haben, können Sie nun Informationen zu Anwendungsrevisionen und zu allen aktiven Instanzen sowie Konfigurationsdetails anzeigen.

App aus Repository-Quellcode über die Befehlszeilenschnittstelle bereitstellen

Sie können Ihre Anwendung direkt aus Repository-Quellcode über die Befehlszeilenschnittstelle bereitstellen. Verwenden Sie den Befehl app create, um ein Image aus Ihrer Git-Repository-Quelle zu erstellen und Ihre Anwendung so bereitzustellen, dass sie auf dieses erstellte Image verweist.

Vorbereitende Schritte

In diesem Szenario erstellt Code Engine ein Image aus Ihrer Git-Repository-Quelle, lädt das Image automatisch in Ihre Container-Registry hoch und erstellt dann Ihre App und stellt sie bereit, um auf dieses erstellte Image zu verweisen. Sie müssen nur einen Namen für die App und die URL für das Git-Repository angeben, wenn sich das Image in einem IBM Cloud® Container Registry-Konto befinden soll. In diesem Fall verwaltet Code Engine den Namensbereich für Sie. Wenn Sie jedoch eine andere Container-Registry verwenden möchten, müssen Sie das Image und ein Registry-Secret für diese Container-Registry angeben. Eine umfassende Liste der Optionen enthält der Abschnitt über den Befehl ibmcloud ce app create.

Weitere Informationen zu erforderlichen Berechtigungen für den Zugriff auf Image-Registrys finden Sie unter Berechtigungen für Image-Registrys konfigurieren.

Der folgende Beispielbefehl application create generiert und stellt die App myapp bereit, die auf ein Image verweist, das aus der Build-Quelle https://github.com/IBM/CodeEngine erstellt wurde. Dieser Befehl erstellt das Image automatisch und lädt es in einen IBM Cloud® Container Registry-Namensbereich in Ihrem Konto hoch. Die Anwendung referenziert dieses erstellte Image. Wenn Sie die Option --build-context-dir angeben, verwendet der Build die Quelle im Verzeichnis helloworld. Dieser Beispielbefehl verwendet die Standardstrategie dockerfile und die Standardbuildgröße medium. Da der Name der Verzweigung des Repositorys nicht mit der Option --build-commit angegeben wird, verwendet Code Engine automatisch die Standardverzweigung des angegebenen Repositorys.

ibmcloud ce application create --name myapp --build-source https://github.com/IBM/CodeEngine --build-context-dir helloworld

Beispielausgabe

Creating application 'myapp'...
Submitting build run 'myapp-run-220411-13abcdefg'...
Creating image 'private.us.icr.io/ce--abcde-4svg40kna19/app-myapp:220411-1756-if8jv'...
Waiting for build run to complete...
Build run status: 'Running'
Build run completed successfully.
Run 'ibmcloud ce buildrun get -n myapp-run-220411-13abcdefg' to check the build run status.
Waiting for application 'myapp' to become ready.
Configuration 'myapp' is waiting for a Revision to become ready.
Ingress has not yet been reconciled.
Waiting for load balancer to be ready.
Run 'ibmcloud ce application get -n myapp' to check the application status.
OK
https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud

Beachten Sie die Ausgabe des application create Befehls, die Informationen zum Fortschritt des Build-Laufs liefert, bevor die App erstellt und bereitgestellt wird.

In diesem Beispiel wird das erstellte Image in den Namensbereich ce--abcde-4svg40kna19 in Container Registry hochgeladen.

Die folgende Tabelle vermittelt Ihnen einen Überblick über die Optionen, die in diesem Beispiel beim Befehl app create verwendet werden. Weitere Informationen zum Befehl und den zugehörigen Optionen finden Sie im Abschnitt über den Befehl ibmcloud ce app create.

Befehlsbeschreibung
Option Beschreibung
--name

Der Name der Anwendung. Verwenden Sie einen Namen, der innerhalb des Projekts eindeutig ist. Dieser Wert ist erforderlich.

  • Der Name muss mit einem Kleinbuchstaben beginnen.
  • Der Name muss mit einem alphanumerischen Zeichen enden.
  • Der Name darf maximal 63 Zeichen lang sein und muss Buchstaben, Ziffern und Bindestriche (-) enthalten.
--build-source Die URL des Git-Repositorys, in dem der Quellcode enthalten ist; Beispiel: https://github.com/IBM/CodeEngine.
--build-context-dir Das Verzeichnis in dem Repository, in dem die Datei mit den Buildpacks oder die Dockerfile enthalten ist. Dieser Wert ist optional.

Die folgende Ausgabe zeigt das Ergebnis des Befehls application get für dieses Beispiel, einschließlich Informationen zum Build.

Beispielausgabe

[...]
Name:          myapp  
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
Project Name:  myproject  
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           2d15h
Created:       2022-04-14T16:10:11-04:00
URL:                https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
Cluster Local URL:  http://myapp.4svg40kna19.svc.cluster.local
Console URL:        https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myapp/configuration
Status Summary:  Application deployed successfully
Environment Variables:    
    Type     Name             Value  
    Literal  CE_API_BASE_URL  https://api.private.us-south.codeengine.cloud.ibm.com
    Literal  CE_APP           myapp  
    Literal  CE_DOMAIN        us-south.codeengine.appdomain.cloud  
    Literal  CE_PROJECT_ID    abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Literal  CE_REGION        us-south  
    Literal  CE_SUBDOMAIN     abcdabcdab
Image:                  private.us.icr.io/ce--27fe9-4svg40kna19/app-myapp:220414-2010-sqsoj
Resource Allocation:
  CPU:                1
  Ephemeral Storage:  400M
  Memory:             4G
Registry Secrets:
  ce-auto-icr-private-us-south
Revisions:
  myapp-00001:
    Age:                23m
    Latest:             true
    Traffic:            100%
    Image:              private.us.icr.io/ce--27fe9-4svg40kna19/app-myapp:220414-2010-sqsoj (pinned to 86944c)  
    Running Instances:  0
Runtime:
  Concurrency:    100
  Maximum Scale:  10
  Minimum Scale:  0
  Timeout:        300
Build Information:
  Build Run Name:     myapp-run-220414-161009244
  Build Type:         git
  Build Strategy:     dockerfile-medium
  Timeout:            600
  Source:             https://github.com/IBM/CodeEngine
  Context Directory:  helloworld
  Dockerfile:         Dockerfile
  Build Run Summary:  Succeeded
  Build Run Status:   Succeeded
  Build Run Reason:   All Steps have completed executing
  Run 'ibmcloud ce buildrun get -n myapp-run-220414-161009244' for details.
[...]

Nachdem Ihre App erstellt und aus Repository-Quellcode bereitgestellt wurde, können Sie die App mit dem Befehl ibmcloud ce app update aktualisieren, um Ihre Anforderungen zu erfüllen. Weitere Informationen zum Aktualisieren von Apps finden Sie unter App aktualisieren. Wenn Sie Ihre Quelle für die Verwendung mit Ihrer App aktualisieren möchten, müssen Sie die Option --build-source im Befehl application update angeben.

Wenn Ihre App über Repository-Quellcode oder lokale Quelle über die Befehlszeilenschnittstelle bereitgestellt wird, basiert die resultierende Buildausführung nicht auf einer Buildkonfiguration. Buildausführungen, die abgeschlossen werden, werden letztendlich automatisch gelöscht. Buildausführungen, die nicht auf einer Buildkonfiguration basieren, werden nach einer Stunde gelöscht, wenn die Buildausführung erfolgreich war. Wenn die Buildausführung nicht erfolgreich ist, wird sie nach 24 Stunden gelöscht. Sie können Informationen zu dieser Buildausführung nur mit der Befehlszeilenschnittstelle anzeigen. Sie können diese Buildausführung nicht in der Konsole anzeigen.

Nächste Schritte

Nachdem Ihre App bereitgestellt wurde, können Sie Ihre bereitgestellte App aktualisieren und den zugehörigen referenzierten Code auf irgendeine der folgenden Arten verwenden, unabhängig davon, wie Sie Ihre App erstellt oder zuvor aktualisiert haben:

  • Wenn Sie über ein Container-Image gemäß dem Standard der Open Container Initiative(OCI) verfügen, müssen Sie beim Bereitstellen Ihrer App lediglich einen Verweis auf das Image angeben, der auf den Speicherort Ihrer Container-Registry verweist. Sie können Ihre App mit einem Image in einer öffentlichen Registry oder privaten Registry bereitstellen.

    Wenn Sie Ihre App mit dem Befehl app create erstellt und die Option --build-source angegeben haben, um das Container-Image aus einer lokalen Quelle oder einer Repository-Quelle zu erstellen, und Sie Ihre App so ändern wollen, dass sie auf ein anderes Container-Image verweist, müssen Sie zuerst die Zuordnung des Builds aus Ihrer App entfernen. Führen Sie beispielsweise ibmcloud ce application update -n APP_NAME --build-clear aus. Nachdem Sie die Zuordnung des Builds aus Ihrer App entfernt haben, können Sie die App aktualisieren, sodass sie auf ein anderes Image verweist.

  • Wenn Sie mit Quellcode beginnen, der sich in einem Git-Repository befindet, können Sie es Code Engine überlassen, das Image aus Ihrer Quelle zu erstellen und die App mit einer einzigen Operation bereitzustellen. In diesem Szenario lädt Code Engine Ihr Image in IBM Cloud® Container Registry hoch. Weitere Informationen finden Sie unter App aus Repository-Quellcode bereitstellen. Wenn Sie mehr Kontrolle über den Build Ihres Image wünschen, können Sie das Image mit Code Engine erstellen, bevor Sie Ihre App implementieren.

  • Wenn Sie mit Quellcode beginnen, der sich auf einer lokalen Workstation befindet, können Sie es Code Engine überlassen, das Image aus Ihrer Quelle zu erstellen und die App mit einem einzelnen CLI-Befehl bereitzustellen. In diesem Szenario lädt Code Engine Ihr Image in IBM Cloud® Container Registry hoch. Weitere Informationen finden Sie unter App aus lokalem Quellcode über die CLI bereitstellen. Wenn Sie mehr Kontrolle über den Build Ihres Image wünschen, können Sie das Image mit Code Engine erstellen, bevor Sie Ihre App implementieren.

    Sie könnten beispielsweise festlegen, dass Code Engine den Build Ihrer lokalen Quelle handhaben soll, während Sie Ihre Quelle für die App weiterentwickeln. Nachdem das Image ausgereift ist, können Sie die bereitgestellte App aktualisieren, um auf das gewünschte Image zu verweisen. Sie können diesen Prozess nach Bedarf wiederholen.

Wenn Sie Ihre aktualisierte App bereitstellen, wird die neueste Version Ihres referenzierten Container-Image heruntergeladen und bereitgestellt, sofern kein Tag für das Image angegeben ist. Wenn ein Tag für das Image angegeben wird, wird das mit Tags versehene Image für die Implementierung verwendet.

Benötigen Sie weitere Codebeispiele? Schaut euch die Beispiele im Repository „ IBM Cloud Code Engine “ unter GitHub an.