Creazione del lavoro dal codice sorgente locale con la CLI

È possibile creare il proprio job direttamente dal codice sorgente sulla propria workstation locale utilizzando la CLI di IBM Cloud® Code Engine. Utilizza il comando job create per creare un'immagine dalla tua origine locale e definire la configurazione per il tuo lavoro per fare riferimento a questa immagine creata.

Quando si inoltra una build che estrae il codice da una directory locale, il codice sorgente viene compresso in un file di archivio. Code Engine carica automaticamente l'immagine in uno spazio dei nomi IBM Cloud® Container Registry nel tuo account e crea quindi il lavoro per fare riferimento a questa immagine creata. Nota che puoi indicare come destinazione solo IBM Cloud Container Registry per le tue build locali. Per questo scenario, è necessario fornire solo un nome per il lavoro e il percorso dell'origine locale. Per un elenco completo delle opzioni, consultare il comando ibmcloud ce job create.

Per informazioni sulle autorizzazioni richieste per accedere ai registri delle immagini, consultare Impostazione delle autorizzazioni per i registri delle immagini.

È possibile scegliere di ignorare alcuni pattern di file dall'interno del codice origine utilizzando il file .ceignore, che si comporta in modo simile a un file .gitignore. Ad esempio, le entrate per un file .ceignore per un'applicazione node.js potrebbero includere node_modules e .npm. Per ulteriori modelli di file di esempio da ignorare, vedi GitHub.gitignore repository.

Per questo scenario è necessario il pacchetto " IBM Cloud® Container Registry ".

Prima di iniziare

Questo esempio utilizza gli esempi https://github.com/IBM/CodeEngine ; in particolare, l'esempio helloworld.

  1. Scarica l'origine di esempio https://github.com/IBM/CodeEngine sulla tua workstation locale con il seguente comando.

    git clone https://github.com/IBM/CodeEngine
    
  2. Passa alla directory CodeEngine\helloworld.

  3. Dalla directory CodeEngine\helloworld, creare il lavoro myjob-local, che utilizza un'immagine creata dall'origine CodeEngine\helloworld sulla workstation locale. Questo comando crea e invia automaticamente l'immagine a un namespace IBM Cloud Container Registry nel tuo account. Se non hai uno spazio dei nomi Container Registry esistente, Code Engine ne crea automaticamente uno per te. Aggiungendo l'opzione --wait, specifica che la creazione del lavoro attende il completamento della build dell'immagine.

    ibmcloud ce job create --name myjob-local --build-source . --wait
    

    . indica che l'origine build si trova nella directory di lavoro corrente.

    Output di esempio

    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
    

    Poiché è stata specificata l'opzione --wait, l'output del comando job create fornisce informazioni sull'avanzamento dell'esecuzione della build prima della creazione del lavoro.

    In questo esempio, l'immagine creata viene caricata nello spazio dei nomi di ce--abcde-glxo4kabcde in Container Registry.

    La seguente tabella riepiloga le opzioni utilizzate con il comando job create in questo esempio. Per ulteriori informazioni sul comando e le sue opzioni, consultare il comando ibmcloud ce job create.

    Descrizione del comando
    Opzione Descrizione
    --name

    Il nome del lavoro. Utilizzare un nome univoco all'interno del progetto. Questo valore è obbligatorio.

    • Il nome deve iniziare e terminare con un carattere alfanumerico minuscolo.
    • Il nome deve essere di 63 caratteri o meno e può contenere lettere, numeri e trattini (-).
    --build-source Il percorso verso la fonte locale.
    --wait Specifica di attendere il completamento della creazione dell'immagine prima di creare il lavoro.
  4. (Facoltativo) Utilizzare il comando job get per visualizzare le informazioni sul lavoro, incluse le informazioni sulla build.

    ibmcloud ce job get --name myjob-local
    

    Output di esempio

    [...]
    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. Ora che il tuo lavoro è stato creato e la tua immagine è stata creata, esegui il tuo lavoro che fa riferimento all'immagine creata. Questo comando di esempio esegue il lavoro myjobrun-local in base alla configurazione del lavoro myjob-local.

    ibmcloud ce jobrun submit --name myjobrun-local --job myjob-local
    
  6. (facoltativo) Visualizzare i dettagli dell'esecuzione del lavoro.

    ibmcloud ce jobrun get --name myjobrun-local
    

    Output di esempio

    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
    

Ora che il lavoro è creato ed eseguito dal codice sorgente del repository, è possibile aggiornarlo per soddisfare le proprie necessità utilizzando il comando ibmcloud ce job update. Per ulteriori informazioni sull'aggiornamento dei lavori, consultare Aggiornamento di un lavoro. Se si desidera aggiornare l'origine da utilizzare con il lavoro, è necessario fornire l'opzione --build-source nel comando job update.

Invece di creare la tua immagine dall'origine locale e creare il lavoro con un unico comando, puoi scegliere di creare dall'origine locale prima prima di creare il tuo lavoro. Consultare la sezione Creazione di una configurazione di build che estrae l'origine da una workstation locale.

Quando il tuo lavoro viene creato dall'origine locale o dal codice sorgente del repository con la CLI, l'esecuzione della build risultante non si basa su una configurazione di build. Le esecuzioni di build completate vengono infine eliminate automaticamente. Le esecuzioni di build che non si basano su una configurazione di build vengono eliminate dopo 1 ora se l'esecuzione di build ha esito positivo. Se l'esecuzione della build non ha esito positivo, questa esecuzione della build viene eliminata dopo 24 ore. È possibile visualizzare solo le informazioni su questa esecuzione di build con la CLI. Non è possibile visualizzare questa esecuzione di build nella console.

Passi successivi

  • Dopo aver creato il lavoro, inoltrare il lavoro per eseguirlo. Vedere Esecuzione di un lavoro. È possibile eseguire il lavoro più volte.

  • Dopo aver eseguito il lavoro, per visualizzare i dettagli del lavoro e delle esecuzioni del lavoro, consultare dettagli del lavoro di accesso.

  • Ora che il tuo lavoro è stato creato, considera di rendere i tuoi lavori guidati da eventi. Utilizzando le sottoscrizioni agli eventi, puoi attivare i tuoi lavori mediante pianificazioni periodiche o impostare il lavoro in modo che reagisca agli eventi come i caricamenti di file.

  • È possibile aggiornare il lavoro e il relativo codice di riferimento in qualsiasi dei seguenti modi, indipendentemente dal modo in cui è stato creato o precedentemente aggiornato il lavoro.

    • Se hai un'immagine del contenitore, in base allo standard OCI(Open Container Initiative), devi fornire solo un riferimento all'immagine, che punta all'ubicazione del tuo registro del contenitore quando crei (o aggiorni) il tuo lavoro. Puoi creare (o aggiornare) il tuo lavoro dalle immagini in un registro pubblico o in un Registro privato e quindi accedere all'immagine di riferimento dalla tua esecuzione del lavoro.

      Se hai creato il tuo lavoro utilizzando il comando job create e hai specificato l'opzione --build-source per creare l'immagine del contenitore dall'origine del repository o locale e vuoi modificare il tuo lavoro in modo che punti a un'altra immagine del contenitore, devi prima rimuovere l'associazione della build dal tuo lavoro. Ad esempio, eseguire ibmcloud ce job update -n JOB_NAME --build-clear. Dopo aver rimosso l'associazione della build dal tuo lavoro, puoi aggiornare il lavoro per fare riferimento a un'immagine diversa.

    • Se stai iniziando con il codice sorgente che risiede in un repository Git, puoi scegliere di consentire a Code Engine di creare l'immagine dalla tua origine e creare (o aggiornare) il lavoro con una singola operazione. In questo scenario, Code Engine carica la tua immagine in IBM Cloud® Container Registry. Per ulteriori informazioni, consultare Creazione di un lavoro dal codice sorgente del repository. Se vuoi avere un maggiore controllo sulla build della tua immagine, puoi scegliere di creare l'immagine con Code Engine prima di creare (o aggiornare) il tuo lavoro ed eseguirlo.

    • Se stai iniziando con il codice di origine che risiede su una workstation locale, puoi scegliere di consentire a Code Engine di creare l'immagine dalla tua origine e creare il lavoro con un singolo comando CLI. In questo scenario, Code Engine carica la tua immagine in IBM Cloud® Container Registry. Per ulteriori informazioni, vedi Creazione del tuo lavoro dal codice sorgente locale con la CLI. Se vuoi avere un maggiore controllo sulla build della tua immagine, puoi scegliere di creare l'immagine con Code Engine prima di creare (o aggiornare) il tuo lavoro ed eseguirlo.

    Ad esempio, potresti scegliere di lasciare che Code Engine gestisca la creazione della tua origine locale mentre evolvi lo sviluppo della tua origine per il lavoro. Quindi, una volta maturata l'immagine, puoi aggiornare il job per fare riferimento all'immagine specifica che desideri. È possibile ripetere questo processo in base alle necessità.

    Quando esegui il tuo job aggiornato, per l'esecuzione del job viene utilizzata l'ultima versione della tua immagine del contenitore di riferimento, a meno che non venga specificata una tag per l'immagine. Se viene specificato un tag per l'immagine, l'immagine con tag viene utilizzata per l'esecuzione del lavoro.

Cerchi altri esempi di codice? Dai un'occhiata agli esempi disponibili nel repository " IBM Cloud Code Engine " su GitHub.