Aggiornamento di un lavoro

È possibile apportare modifiche a un lavoro definito ed eseguire il lavoro aggiornato dalla console o con la CLI. Le modifiche al tuo lavoro potrebbero includere l'aggiornamento dell'immagine del contenitore di codice, gli argomenti o i comandi del codice, le risorse dell'istanza di runtime o le variabili di ambiente.

Ogni volta che viene eseguito il lavoro, viene utilizzata l'ultima versione della tua immagine del contenitore di riferimento per l'esecuzione del lavoro, 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.

I lavori batch inoltrati vengono eseguiti in parallelo, se possibile. Se il numero o la dimensione dei lavori inoltrati supera i limiti di quota configurati, come il numero massimo di istanze in esecuzione, Code Engine accoda i lavori e ritarda l'esecuzione fino al termine di un numero sufficiente di lavori. Per ulteriori informazioni sulle quote e i limiti per i lavori, inclusi memoria e CPU, vedi Limiti e quote per Code Engine.

È 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.

Aggiornamento di un lavoro dalla console

Quando un job è in stato pronto, è possibile aggiornare il job. Aggiorniamo il lavoro myjob creato in precedenza per modificare l'output delle variabili di saluto e di ambiente aggiornando una variabile di ambiente. Quando viene inviata una richiesta a questo lavoro di esempio icr.io/codeengine/helloworld, il lavoro legge la variabile d'ambiente TARGET e stampa "Hello ${TARGET}!". Se questa variabile di ambiente è vuota, viene restituito "Hello World!". Per ulteriori informazioni sul codice utilizzato per questo esempio, vedere helloworld.

  1. Passare alla propria pagina di lavoro.

    1. Nella pagina "Progetti"(Code Engine ), clicca sul nome del tuo progetto.
    2. Fare clic su "Lavori", quindi sulla scheda "Lavori".
    3. Fai clic sul nome del lavoro che desideri aggiornare.
  2. Nella scheda Configurazione > Variabili d'ambiente, fare clic su Aggiungi variabile d'ambiente. Aggiungere una variabile di ambiente letterale con il nome TARGET con il valore Sunshine. icr.io/codeengine/helloworld emette il messaggio, Hello <value_of_TARGET>!>.

  3. Fare clic su Aggiungi per aggiungere la variabile d'ambiente.

  4. Fai clic su Deploy.

  5. Fare clic su Inoltra lavoro.

  6. Dal pannello Inoltra lavoro, questa volta modificare il valore CPU in una delle scelte CPU valide per la memoria specificata. Notare che è necessario utilizzare combinazioni di memoria e CPU valide. Fare nuovamente clic su Inoltra lavoro per eseguire questo lavoro. Il sistema visualizza lo stato del lavoro nella pagina Dettagli lavoro. Si noti il valore CPU aggiornato nella sezione Configuration dei dettagli del lavoro.

  7. visualizzando le registrazioni lavori dalla console per questo lavoro, l'output del lavoro aggiornato è Hello Sunshine!.

Aggiornamento di un lavoro con la CLI

Con la CLI, puoi aggiornare una configurazione del lavoro esistente o specificare le tue modifiche su una nuova esecuzione del lavoro.

Aggiornamento di una configurazione del lavoro con la CLI

È possibile aggiornare una configurazione lavoro esistente con il comando ibmcloud ce job update.

  1. Utilizzare il comando job update per aggiornare il job myjob in modo che faccia riferimento ad un'immagine differente.

    ibmcloud ce job update --name myjob --image icr.io/codeengine/testjob
    

    Eseguire il comando ibmcloud ce job get -n myjob per visualizzare i dettagli del lavoro aggiornato.

    Output di esempio

    Name:          myjob
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           3m6s
    Created:       2021-06-04T11:56:22-04:00
    Last Job Run:
        Name:     myjob-jobrun-abcde
        Age:      32d
        Created:  2021-08-06T13:50:02-04:00
    Image:                icr.io/codeengine/testjob
    Resource Allocation:
        CPU:     1
        Memory:  4G
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        Max Execution Time:    7200
        Retry Limit:           3
    [...]
    
  2. Eseguire il comando ibmcloud ce jobrun submit per eseguire un job che fa riferimento a questa configurazione del job aggiornata. Per il comando jobrun submit, utilizzare l'opzione --job per fare riferimento ad una configurazione del job definito. Mentre l'opzione --name non è richiesta se è specificata l'opzione --job, il seguente comando di esempio specifica l'opzione --name per fornire un nome per l'esecuzione di questo lavoro.

    ibmcloud ce jobrun submit --name myjobrun1 --job myjob
    
  3. Eseguire ibmcloud ce jobrun get -n myjobrun1 per visualizzare i dettagli di questa esecuzione lavoro. Notare che l'immagine di riferimento è icr.io/codeengine/testjob, che si basa sulla configurazione del lavoro aggiornata.

    Output di esempio

    Getting jobrun 'myjobrun1'...
    Getting instances of jobrun 'myjobrun1'...
    Getting events of jobrun 'myjobrun1'...
    [...]
    Name:          myjobrun1
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           3m6s
    Created:       2021-06-15T11:56:22-04:00
    Job Ref:              myjob
    Image:                icr.io/codeengine/testjob
    Resource Allocation:
        CPU:                1
        Ephemeral Storage:  4G
        Memory:             4G
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        JOP_ARRAY_SIZE Value:  1
        Max Execution Time:    7200
        Retry Limit:           3
    Status:
        Completed:          11s
        Instance Statuses:
            Succeeded:  1
        Conditions:
            Type      Status  Last Probe  Last Transition
        Pending   True    15s         15s
        Running   True    11s         11s
        Complete  True    11s         11s
    Events:
        Type    Reason     Age                Source                Messages
        Normal  Updated    16s (x3 over 20s)  batch-job-controller  Updated JobRun "myjobrun1"
        Normal  Completed  16s                batch-job-controller  JobRun completed successfully
    Instances:
        Name           Running  Status     Restarts  Age
        myjobrun1-0-0  0/1      Succeeded  0         20s
    

Aggiornamento di un lavoro eseguito con CLI

È possibile specificare le modifiche per un lavoro eseguito con il comando ibmcloud ce jobrun resubmit. Il comando jobrun submit inoltra nuovamente un'esecuzione di lavoro che fa riferimento a un'esecuzione di lavoro precedente.

  1. Utilizzare il comando jobrun resubmit per inoltrare nuovamente l'esecuzione del lavoro myjobrun1 e modificare gli indici di array da 0 a 1-4. Anche se l'opzione --name non è richiesta per il comando jobrun resubmit, il seguente comando di esempio specifica l'opzione --name per fornire un nome per l'esecuzione di questo lavoro.

    ibmcloud ce jobrun resubmit -jobrun myjobrun1 --array-indices "1-4" --name myjobrunresubmit
    
  2. Eseguire il comando ibmcloud ce jobrun get -n myjobrunresubmit per visualizzare i dettagli dell'esecuzione del lavoro aggiornato. Notare che il valore degli indici di array viene aggiornato per questa esecuzione del lavoro.

    Output di esempio

    Getting jobrun 'myjobrunresubmit'...
    Getting instances of jobrun 'myjobrunresubmit'...
    Getting events of jobrun 'myjobrunresubmit'...
    [...]
    Name:          myjobrunresubmit2
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           3m6s
    Created:       2021-06-04T11:56:22-04:00
    Job Ref:              myjob
    Image:                icr.io/codeengine/testjob
    Resource Allocation:
        CPU:                1
        Ephemeral Storage:  4G
        Memory:             4G
    Runtime:
        Mode:                  task
        Array Indices:         1-4
        Array Size:            4
        JOP_ARRAY_SIZE Value:  4
        Max Execution Time:    7200
        Retry Limit:           3
    Status:
        Completed:          34s
        Instance Statuses:
            Succeeded:  4
        Conditions:
            Type      Status  Last Probe  Last Transition
        Pending   True    38s         38s
        Running   True    36s         36s
        Complete  True    34s         34s
    Events:
        Type    Reason     Age                Source                Messages
        Normal  Updated    36s (x7 over 40s)  batch-job-controller  Updated JobRun "myjobrunresubmit"
        Normal  Completed  36s                batch-job-controller  JobRun completed successfully
    Instances:
        Name                  Running  Status     Restarts  Age
        myjobrunresubmit-1-0  0/1      Succeeded  0         40s
        myjobrunresubmit-2-0  0/1      Succeeded  0         40s
        myjobrunresubmit-3-0  0/1      Succeeded  0         40s
        myjobrunresubmit-4-0  0/1      Succeeded  0         40s
    

Le esecuzioni lavoro inoltrate (o reinoltrate) con la CLI che non fanno riferimento a una configurazione lavoro definita non sono visualizzabili dalla console.