Job aus lokalem Quellcode über die Befehlszeilenschnittstelle erstellen

Sie können Ihren Job direkt aus Quellcode auf Ihrer lokalen Workstation über die Befehlszeilenschnittstelle von IBM Cloud® Code Engine erstellen. Verwenden Sie den Befehl job create, um ein Image aus Ihrer lokalen Quelle zu erstellen und die Konfiguration für Ihren Job zu definieren, um auf dieses erstellte Image zu verweisen.

Wenn Sie einen Build übergeben, der Code aus einem lokalen Verzeichnis extrahiert, wird Ihr Quellcode in eine Archivdatei gepackt. Code Engine lädt das Image automatisch in einen IBM Cloud® Container Registry-Namensbereich in Ihrem Konto hoch und erstellt dann Ihren Job, um auf dieses erstellte Image zu verweisen. Beachten Sie, dass Sie nur IBM Cloud Container Registry für Ihre lokalen Builds verwenden können. Für dieses Szenario müssen Sie nur einen Namen für den Job und den Pfad zur lokalen Quelle angeben. Eine umfassende Liste der Optionen finden Sie im Abschnitt über den Befehl ibmcloud ce job create.

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

Sie können bestimmte Dateimuster aus Ihrem Quellcode ignorieren, indem Sie die Datei .ceignore verwenden, die sich ähnlich wie eine .gitignore-Datei verhält. Einträge für eine .ceignore-Datei bezüglich einer Node.js-Anwendung können beispielsweise node_modules und .npm enthalten. Weitere Beispiele für zu ignorierende Dateimuster finden Sie im Repository „ GitHub.gitignore “.

Für dieses Szenario ist IBM Cloud® Container Registry erforderlich.

Vorbereitende Schritte

In diesem Beispiel werden https://github.com/IBM/CodeEngine-Beispiele verwendet, insbesondere das Beispiel helloworld.

  1. Laden Sie die Beispielquelle https://github.com/IBM/CodeEngine mit dem folgenden Befehl auf Ihre lokale Workstation herunter.

    git clone https://github.com/IBM/CodeEngine
    
  2. Wechseln Sie in das Verzeichnis CodeEngine\helloworld.

  3. Erstellen Sie im Verzeichnis CodeEngine\helloworld den Job myjob-local, der ein Image verwendet, das aus der CodeEngine\helloworld-Quelle auf Ihrer lokalen Workstation erstellt wird. Dieser Befehl erstellt das Image automatisch und überträgt es mit einer Push-Operation an einen IBM Cloud Container Registry-Namensbereich in Ihrem Konto. Wenn Sie nicht über einen Container Registry-Namensbereich verfügen, erstellt Code Engine diesen automatisch für Sie. 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-local --build-source . --wait
    

    . gibt an, dass sich die Build-Quelle im aktuellen Arbeitsverzeichnis befindet.

    Beispielausgabe

    Creating job 'myjob-local'...
    Packaging files to upload from source path '.'...
    Submitting build run 'myjob-local-run-220420-150457582'...
    Creating image 'private.us.icr.io/ce--abcde-glxo4kabcde/job-myjob-local'...
    Waiting for build run to complete...
    Build run status: 'Running'
    Build run completed successfully.
    Run 'ibmcloud ce buildrun get -n myjob-local-run-220420-150457582' to check the build run status.
    OK
    

    Da wir die Option „ --wait “ angegeben haben, liefert der Befehl job create Befehls enthält Informationen zum Fortschritt des Build-Laufs, noch bevor der Job erstellt wird.

    In diesem Beispiel wird das erstellte Image in den Namensbereich ce--abcde-glxo4kabcde in 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 Der Pfad zur lokalen Quelle.
    --wait Gibt an, dass auf den Abschluss der Imageerstellung gewartet werden soll, bevor der Job erstellt wird.
  4. (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-local
    

    Beispielausgabe

    [...]
    Name:          myjob-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
    Image:                private.us.icr.io/ce--abcde-glxo4kabcde/job-myjob-local
    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-local-run-220420-150457582
      Build Type:         local
      Build Strategy:     dockerfile-medium
      Timeout:            600
      Source:             .
      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-local-run-220420-150457582' for details..
    [...]
    
  5. 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-local auf der Basis der Jobkonfiguration myjob-local aus.

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

    ibmcloud ce jobrun get --name myjobrun-local
    

    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-local
    Image:                private.us.icr.io/ce--abcde-glxo4kabcde/job-myjob-local
    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:          2m40s
      Instance Statuses:
        Succeeded:  1
      Conditions:
        Type      Status  Last Probe  Last Transition
        Pending   True    2m44s       2m44s
        Running   True    2m40s       2m40s
        Complete  True    2m40s       2m40s
    Events:
      Type    Reason     Age                    Source                Messages
      Normal  Updated    2m41s (x3 over 2m45s)  batch-job-controller  Updated JobRun "myjobrun-local"
      Normal  Completed  2m41s                  batch-job-controller  JobRun completed successfully
    Instances:
      Name                Running  Status     Restarts  Age
      myjobrun-local-0-0  0/1      Succeeded  0         2m45s
    

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.

Anstatt Ihr Image aus einer lokalen Quelle zu erstellen und Ihren Job mit einem einzelnen Befehl zu generieren, haben Sie die Möglichkeit, zuerst einen Build aus einer lokalen Quelle zu erstellen, bevor Sie Ihren Job generieren. Siehe Buildkonfiguration erstellen, die Quelle von einer lokalen Workstation extrahiert.

Wenn Ihr Job aus einer lokalen Quelle oder aus Repository-Quellcode ü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 gemäß dem Standard der Open Container Initiative(OCI) verfügen, müssen Sie beim Erstellen (oder Aktualisieren) Ihres Jobs lediglich einen Verweis auf das Image angeben, der auf den Speicherort Ihrer Container-Registry verweist. Sie können Ihren Job anhand von Images aus einem öffentlichen oder privaten Registry erstellen (oder aktualisieren) und anschließend während der Ausführung Ihres Jobs auf das referenzierte Image 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 Image haben möchten, können Sie das Image mit Code Engine generieren, bevor Sie Ihren Job erstellen (oder aktualisieren) und 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? Schaut euch die Beispiele im Repository „ IBM Cloud Code Engine “ unter GitHub an.