Job aus Repository-Quellcode erstellen

Sie können Ihren Job direkt aus Quellcode, der sich in einem Git-Repository befindet, über die IBM Cloud® Code Engine-Konsole und -Befehlszeilenschnittstelle erstellen. Finden Sie heraus, welche Vorteile das Erstellen Ihres Image mit Code Engine bietet.

Job aus Repository-Quellcode über die Konsole erstellen

Sie können Ihren Job direkt aus Quellcode über die Konsole erstellen.

Zur Vorbereitung sollten Sie einen Plan für Ihren Build erstellen. Sie können auch nach Tipps für die Erstellung einer Dockerfile suchen. Bei jeder Ausführung des Jobs wird die aktuellste Version der abhängigen Buildartefakte, einschließlich der Buildpacks und des Container-Image, während des Erstellungsprozesses verwendet und in das resultierende Container-Image eingeschlossen.

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 Senden von Images an ein anderes Container Registry-Konto oder an ein privates Docker Hub-Konto finden Sie unter Auf Container-Registrys zugreifen.

Informationen zu den erforderlichen Zugriffsberechtigungen bezüglich Image-Registrys finden Sie unter Berechtigungen für Image-Registrys einrichten.

  1. Öffnen Sie die Code Engine-Konsole.
  2. Wählen Sie Los geht's aus.
  3. Wählen Sie Job aus.
  4. Geben Sie einen Namen für den Job ein. Verwenden Sie einen Namen für den Job, der innerhalb des Projekts eindeutig ist.
  5. 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 einen Job erstellen zu können.
  6. Wählen Sie Quellcode 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. Geben Sie Registryinformationen dazu an, wo das Image Ihrer Buildausgabe gespeichert werden soll. Wählen Sie einen Speicherort für die Containerregistrierung, z. B. IBM Registry Dallas. Wenn Ihre Registry privat ist, müssen Sie den Zugriff auf diese Registry einrichten.
  11. Wählen Sie ein bestehendes Registrierungsgeheimnis oder erstellen Sie ein neues. Wenn Sie Ihr Image in einer IBM Cloud 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 die Standardwerte für Umgebungsvariablen oder Laufzeiteinstellungen. Weitere Informationen zu diesen Optionen finden Sie unter Optionen für Erstellung und Ausführung von Jobs.
  15. Klicken Sie auf Erstellen.
  16. Nachdem Ihre Buildausführung übergeben wurde, wird das erstellte Container-Image an Container Registry gesendet und Ihr Job kann auf das erstellte Image verweisen. Wenn der Job bereit ist, klicken Sie auf Job übergeben, um den Job basierend auf der aktuellen Konfiguration auszuführen.

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 die Buildausführung nicht erfolgreich ist, wird sie nach 48 Stunden gelöscht.

Nachdem Sie Ihren Job erstellt haben und Ihren Job ausführen, können Sie auf Ihrer Jobseite Details zu Ihrer Jobkonfiguration und Jobausführungen anzeigen.

Benötigen Sie Hilfe? Mehr erfahren Sie unter Tipps zur Fehlerbehebung bei Builds.

Job aus Repository-Quellcode über die Befehlszeilenschnittstelle erstellen

Sie können Ihren Job über die Befehlszeilenschnittstelle direkt aus Repository-Quellcode erstellen. Verwenden Sie den Befehl job create, um ein Image aus Ihrer Git-Repositoryquelle zu erstellen und die Konfiguration für Ihren Job zu definieren.

Vorbereitende Schritte

In diesem Szenario erstellt Code Engine ein Image aus Ihrer Git-Repositoryquelle, lädt das Image automatisch in Ihre Container-Registry hoch und erstellt dann Ihre Jobkonfiguration, um mit dem Befehl job create auf dieses erstellte Image zu verweisen. Sie müssen nur einen Namen für den Job und die URL zum 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. Verwenden Sie den Befehl ibmcloud ce jobrun submit, um Ihren Job auszuführen, der auf das erstellte Image verweist. Eine vollständige Liste der Optionen finden Sie in den Befehlen ibmcloud ce job create und ibmcloud ce jobrun submit.

Informationen zu den erforderlichen Zugriffsberechtigungen bezüglich Image-Registrys finden Sie unter Berechtigungen für Image-Registrys einrichten.

  1. Mit dem Befehl job create können Sie den Job myjob-repo generieren, um auf ein Image zu verweisen, das aus der https://github.com/IBM/CodeEngine-Buildquelle erstellt wird. Dieser Befehl erstellt das Image automatisch und lädt das Image in einen IBM Cloud® Container Registry-Namensbereich in Ihrem Konto hoch. Jobausführungen für diesen Job verweisen auf 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. Durch Hinzufügen der Option --wait wird angegeben, dass die Joberstellung auf den Abschluss des Image-Builds warten soll.

    ibmcloud ce job create --name myjob-repo --build-source https://github.com/IBM/CodeEngine --build-context-dir helloworld --wait
    

    Beispielausgabe

    Creating job 'myjob-repo'...
    Submitting build run 'myjob-repo-run-220420-15590196'...
    Creating image 'private.us.icr.io/ce--abcde-glxo4kabcde/job-myjob-repo'...
    Waiting for build run to complete...
    Build run status: 'Running'
    Build run completed successfully.
    Run 'ibmcloud ce buildrun get -n myjob-repo-run-220420-15590196' to check the build run status.
    OK
    

    Da wir die Option --wait angegeben haben, liefert die Ausgabe des job create Informationen über den Verlauf des Build-Laufs, bevor der Auftrag erstellt wird.

    In diesem Beispiel wird das erstellte Image in den Namensbereich ce--abcde-glxo4kabcde in IBM Cloud Container Registry hochgeladen.

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

    Befehlsbeschreibung
    Option Beschreibung
    --name

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

    • Der Name muss mit einem alphanumerischen Kleinbuchstaben beginnen und enden.
    • Der Name darf maximal 63 Zeichen lang sein und kann Buchstaben, Zahlen 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.
    --wait Gibt an, dass auf den Abschluss der Imageerstellung gewartet werden soll, bevor der Job erstellt wird.
  2. (Optional) Mit dem Befehl job get können Sie Informationen zu Ihrem Job anzeigen, einschließlich Informationen zum Build.

    ibmcloud ce job get --name myjob-repo
    

    Beispielausgabe

    [...]
    Name:          myjob-repo
    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
    
    Image:                private.us.icr.io/ce--abcde-glxo4kabcde/job-myjob-repo
    
    Resource Allocation:
      CPU:     1
      Memory:  4G
    Registry Secrets:
      ce-auto-icr-private-us-south
    
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        Max Execution Time:    7200
        Retry Limit:           3
    
    Build Information:
      Build Run Name:     myjob-repo-run-220420-15590196
      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 myjob-repo-run-220420-15590196' for details.
    
  3. Nachdem Ihr Job und Ihr Image erstellt wurden, führen Sie Ihren Job aus, der auf das erstellte Image verweist. Dieser Beispielbefehl führt den Job myjobrun-repo auf der Basis der Jobkonfiguration myjob-repo aus.

    ibmcloud ce jobrun submit --name myjobrun-repo --job myjob-repo
    
  4. (Optional) Zeigen Sie die Details Ihrer Jobausführung an.

    ibmcloud ce jobrun get --name myjobrun-repo
    

    Beispielausgabe

    Getting jobrun 'myjobrun-local'...
    Getting instances of jobrun 'myjobrun-local'...
    Getting events of jobrun 'myjobrun-local'...
    Run 'ibmcloud ce jobrun events -n myjobrun-local' to get the system events of the job run instances.
    Run 'ibmcloud ce jobrun logs -f -n myjobrun-local' to follow the logs of the job run instances.
    OK
    
    Name:          myjobrun-local
    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
    
    Job Ref:              myjob-repo
    Image:                private.us.icr.io/ce--abcde-glxo4kabcde/job-myjob-repo
    Resource Allocation:
      CPU:                1
      Ephemeral Storage:  400M
      Memory:             4G
    Registry Secrets:
      ce-auto-icr-private-us-south
    
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        JOP_ARRAY_SIZE Value:  1
        Max Execution Time:    7200
        Retry Limit:           3
    
    Status:
      Completed:          90s
      Instance Statuses:
        Succeeded:  1
      Conditions:
        Type      Status  Last Probe  Last Transition
        Pending   True    101s        101s
        Running   True    91s         91s
        Complete  True    90s         90s
    
    Events:
      Type    Reason     Age                 Source                Messages
      Normal  Updated    91s (x4 over 102s)  batch-job-controller  Updated JobRun "myjobrun-repo"
      Normal  Completed  91s                 batch-job-controller  JobRun completed successfully
    
    Instances:
      Name               Running  Status     Restarts  Age
      myjobrun-repo-0-0  0/1      Succeeded  0         102s
    

Nachdem Ihr Job erstellt und über Repository-Quellcode ausgeführt wurde, können Sie den Job mit dem Befehl ibmcloud ce job update entsprechend Ihren Anforderungen aktualisieren. Weitere Informationen zum Aktualisieren von Jobs finden Sie unter Job aktualisieren. Wenn Sie Ihre Quelle für Ihren Job aktualisieren möchten, müssen Sie die Option --build-source im Befehl job update angeben.

Wenn Ihr Job aus Repository-Quellcode oder aus lokaler Quelle über die Befehlszeilenschnittstelle erstellt 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 Sie Ihren Job erstellt haben, übergeben Sie ihn zwecks Ausführung. Weitere Informationen finden Sie unter Job ausführen. Sie können Ihren Job mehrmals ausführen.

  • Wenn Sie Details zu Ihrem Job und zu Jobausführungen anzeigen möchten, nachdem Sie Ihren Job ausgeführt haben, finden Sie weitere Informationen unter Auf Jobdetails zugreifen.

  • Nachdem Ihr Job erstellt wurde, sollten Sie erwägen, Ihre Jobs ereignisgesteuert zu konfigurieren. Mithilfe von Ereignissubskriptionen können Sie Ihre Jobs mittels periodischer Zeitpläne auslösen oder Ihren Job so einstellen, dass er auf Ereignisse wie Dateiuploads reagiert.

  • Sie können Ihren Job aktualisieren und den zugehörigen referenzierten Code in irgendeiner der folgenden Arten verwenden, unabhängig davon, wie Sie Ihren Job erstellt oder zuvor aktualisiert haben.

    • Wenn Sie über ein Container-Image nach dem Standard der Open Container Initiative(OCI) verfügen, müssen Sie bei der Erstellung (oder Aktualisierung) Ihres Auftrags lediglich einen Verweis auf das Image angeben, der auf den Speicherort Ihrer Container-Registry verweist. Sie können Ihren Auftrag aus Bildern in einem öffentliches Register oder privates Register erstellen (oder aktualisieren) und dann von Ihrem Auftragslauf aus auf das referenzierte Bild zugreifen.

      Wenn Sie Ihren Job mit dem Befehl job create erstellt und die Option --build-source angegeben haben, um das Container-Image aus der lokalen Quelle oder der Repository-Quelle zu erstellen, und Sie Ihren Job so ändern möchten, dass er auf ein anderes Container-Image verweist, müssen Sie zuerst die Zuordnung des Builds aus Ihrem Job entfernen. Führen Sie beispielsweise ibmcloud ce job update -n JOB_NAME --build-clear aus. Nachdem Sie die Zuordnung des Builds zu Ihrem Job entfernt haben, können Sie den Job aktualisieren, sodass er auf ein anderes Image verweist.

    • Wenn Sie mit Quellcode beginnen, der sich in einem Git-Repository befindet, können Sie Code Engine überlassen, das Image aus Ihrer Quelle zu erstellen und den Job mit einer einzelnen Operation zu erstellen (oder zu aktualisieren). In diesem Szenario lädt Code Engine Ihr Image in IBM Cloud® Container Registry hoch. Weitere Informationen finden Sie unter Job aus Repository-Quellcode erstellen. Wenn Sie mehr Kontrolle über die Erstellung Ihres Image haben möchten, können Sie das Image mit Code Engine generieren, bevor Sie Ihren Job erstellen (oder aktualisieren) und ausführen.

    • Wenn Sie mit Quellcode beginnen, der sich auf einer lokalen Workstation befindet, können Sie Code Engine das Image aus Ihrer Quelle generieren und den Job mit einem einzelnen CLI-Befehl erstellen lassen. In diesem Szenario lädt Code Engine Ihr Image in IBM Cloud® Container Registry hoch. Weitere Informationen finden Sie unter Job aus lokalem Quellcode über die Befehlszeilenschnittstelle erstellen. Wenn Sie mehr Kontrolle über die Erstellung Ihres Bildes wünschen, können Sie das Bild erstellen) mit Code Engine wählen, bevor Sie Ihren Auftrag erstellen (oder aktualisieren) und den Auftrag ausführen.

    Sie können beispielsweise festlegen, dass Code Engine den Build Ihrer lokalen Quelle bearbeiten soll, wenn Sie die Entwicklung Ihrer Quelle für den Job weiterentwickeln. Nachdem das Image fertiggestellt wurde, können Sie den Job aktualisieren, um auf das gewünschte Image zu verweisen. Sie können diesen Prozess nach Bedarf wiederholen.

    Wenn Sie Ihren aktualisierten Job ausführen, wird die neueste Version Ihres referenzierten Container-Image für die Jobausführung verwendet, 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 Jobausführung verwendet.

Benötigen Sie weitere Codebeispiele? Sehen Sie sich die Beispiele für IBM Cloud Code Engine GitHub repoan.