Mise à jour d'un travail

Vous pouvez modifier un travail défini et exécuter le travail mis à jour à partir de la console ou de l'interface de ligne de commande. Les modifications apportées à votre travail peuvent inclure la mise à jour de l'image du conteneur de code, des arguments ou des commandes de code, des ressources d'instance d'exécution ou des variables d'environnement.

À chaque exécution de votre travail, la dernière version de votre image de conteneur référencée est utilisée pour l'exécution du travail, sauf si une balise est spécifiée pour l'image. Si une balise est spécifiée pour l'image, l'image référencée est utilisée pour l'exécution du travail.

Les travaux par lots soumis sont exécutés en parallèle, si possible. Si le nombre ou la taille des travaux soumis dépasse les limites de quota configurées, telles que le nombre d'instance en cours, Code Engine place les travaux en file d'attente et retarde leur exécution jusqu'à ce qu'un nombre suffisant d'entre eux se terminent. Pour plus d'informations sur les quotas et les limites relatifs aux travaux, y compris la mémoire et l'unité centrale, voir Limites et quotas pour Code Engine.

Vous pouvez mettre à jour votre travail et son code référencé avec n'importe quelle manières suivantes, indépendamment de la façon dont vous avez créé ou mis à jour votre travail.

  • Si vous disposez d'une image de conteneur conforme à la norme Open Container Initiative(OCI), il vous suffit de fournir une référence à cette image, qui pointe vers l'emplacement de votre registre de conteneurs, lorsque vous créez (ou mettez à jour) votre tâche. Vous pouvez créer (ou mettre à jour) votre tâche à partir d'images issues d'un registre public ou privé, puis accéder à l'image référencée depuis l'exécution de votre tâche.

    Si vous avez créé votre travail à l'aide de la commande job create et que vous avez spécifié l'option --build-source pour générer l'image de conteneur à partir de la source locale ou du référentiel, et que vous souhaitez modifier votre travail pour qu'il pointe vers une autre image de conteneur, vous devez d'abord supprimer l'association de la génération de votre travail. Par exemple, exécutez ibmcloud ce job update -n JOB_NAME --build-clear. Après avoir supprimé l'association de la génération de votre travail, vous pouvez mettre à jour le travail pour référencer une image différente.

  • Si vous démarrez avec le code source qui réside dans un référentiel Git, vous pouvez choisir de laisser Code Engine prendre soin de générer l'image à partir de votre source et de créer (ou de mettre à jour) le travail avec une opération unique. Dans ce scénario, Code Engine télécharge votre image sur IBM Cloud® Container Registry. Pour en savoir plus, reportez-vous à la section Création d'un travail à partir du code source du référentiel. Si vous souhaitez plus de contrôle sur la génération de votre image, vous pouvez choisir de générer l'image avec Code Engine avant de créer (ou mettre à jour) votre travail et d'exécuter le travail.

  • Si vous démarrez avec le code source résidant sur un poste de travail local, vous pouvez choisir de laisser Code Engine prendre soin de créer l'image à partir de votre source et de créer le travail avec une commande CLI unique. Dans ce scénario, Code Engine télécharge votre image sur IBM Cloud® Container Registry. Pour en savoir plus, reportez-vous à la section Création de votre travail à partir du code source local avec l'interface de ligne de commande. Si vous souhaitez plus de contrôle sur la génération de votre image, vous pouvez choisir de générer l'image avec Code Engine avant de créer (ou mettre à jour) votre travail et d'exécuter le travail.

Par exemple, vous pouvez choisir de laisser Code Engine gérer la génération de votre source locale pendant que vous faites évoluer le développement de votre source pour le travail. Ensuite, après la maturation de l'image, vous pouvez mettre à jour le travail pour référencer l'image spécifique de votre choix. Vous pouvez répéter ce processus si nécessaire.

Lorsque vous exécutez votre travail mis à jour, la dernière version de votre image de conteneur référencée est utilisée pour l'exécution du travail, sauf si une balise est spécifiée pour l'image. Si une balise est spécifiée pour l'image, l'image référencée est utilisée pour l'exécution du travail.

Mise à jour d'un travail à partir de la console

Lorsqu'un travail est à l'état prêt, vous pouvez mettre à jour le travail. Mettons à jour le job myjob que vous avez créé précédemment afin de modifier les messages d'accueil et les variables d'environnement en mettant à jour une variable d'environnement. Lorsqu'une requête est envoyée à cet exemple de job « icr.io/codeengine/helloworld », celui-ci lit la variable d'environnement « TARGET » et affiche « "Hello ${TARGET}!" ». Si cette variable d'environnement est vide, "Hello World!" est renvoyé. Pour plus d'informations sur le code utilisé dans cet exemple, voir helloworld.

  1. Accédez à la page de votre travail.

    1. Sur la page « Projets » d' Code Engine, cliquez sur le nom de votre projet.
    2. Cliquez sur « Tâches », puis sur l'onglet « Tâches ».
    3. Cliquez sur le nom de la tâche que vous souhaitez mettre à jour.
  2. Dans l'onglet Configuration > Variables d'environnement, cliquez sur Ajouter une variable d'environnement. Ajoutez une variable d'environnement littérale nommée TARGET et ayant la valeur Sunshine. Le icr.io/codeengine/helloworld génère le message Hello <value_of_TARGET>!>.

  3. Cliquez sur « Ajouter » pour ajouter votre variable d'environnement.

  4. Cliquez sur Déployer.

  5. Cliquez sur Soumettre un travail.

  6. Depuis le panneau Soumettre un travail, remplacez cette fois la valeur d'UC par l'un des choix d'UC valides pour la mémoire spécifiée. Vous devez utiliser les combinaisons de mémoire et d'UC valides. Cliquez à nouveau sur Soumettre un travail pour exécuter ce travail. Le système affiche le statut de votre travail sur la page des détails du travail. Notez la valeur d'UC mise à jour dans la section Configuration des détails du travail.

  7. Si vous affichez les journaux de ce travail à partir de la console, la sortie du travail mis à jour est Hello Sunshine!.

Mise à jour d'un travail via l'interface de ligne de commande

A l'aide de l'interface de ligne de commande, vous pouvez mettre à jour une configuration de travail existante ou spécifier vos modifications sur une nouvelle exécution de travail.

Mise à jour d'une configuration de travail via l'interface de ligne de commande

Vous pouvez mettre à jour une configuration de travail existante à l'aide de la commande ibmcloud ce job update.

  1. Utilisez la commande job update pour mettre à jour le travail myjob afin de référencer une autre image.

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

    Exécutez la commande ibmcloud ce job get -n myjob pour afficher les détails du travail mis à jour.

    Exemple de sortie

    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. Exécutez la commande ibmcloud ce jobrun submit pour exécuter un travail qui fait référence à cette configuration de travail mise à jour. Pour la commande jobrun submit, utilisez l'option --job pour référencer une configuration de travail définie. Alors que l'option --name n'est pas obligatoire si l'option --job est spécifiée, l'exemple de commande suivant spécifie l'option --name pour fournir un nom pour cette exécution de travail.

    ibmcloud ce jobrun submit --name myjobrun1 --job myjob
    
  3. Exécutez la commande ibmcloud ce jobrun get -n myjobrun1 pour afficher les détails de cette exécution de travail. Notez que l'image référencée est icr.io/codeengine/testjob, qui est basée sur la configuration de travail mise à jour.

    Exemple de sortie

    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
    

Mise à jour d'une exécution de travail via l'interface de ligne de commande

Vous pouvez spécifier des modifications pour une exécution de travail avec la commande ibmcloud ce jobrun resubmit. La commande jobrun submit soumet à nouveau une exécution de travail qui référence une exécution de travail précédente.

  1. Utilisez la commande jobrun resubmit pour soumettre à nouveau l'exécution du travail myjobrun1 et modifier les index de tableau de 0 en 1-4. Alors que l'option --name n'est pas obligatoire pour la commande jobrun resubmit, l'exemple de commande suivant spécifie l'option --name pour fournir un nom pour cette exécution de travail.

    ibmcloud ce jobrun resubmit -jobrun myjobrun1 --array-indices "1-4" --name myjobrunresubmit
    
  2. Exécutez la commande ibmcloud ce jobrun get -n myjobrunresubmit pour afficher les détails de l'exécution de travail mise à jour. Notez que la valeur des index de tableau est mise à jour pour cette exécution de travail.

    Exemple de sortie

    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
    

Les exécutions de travail soumises (ou soumises à nouveau) via l'interface de ligne de commande qui ne font pas référence à une configuration de travail définie ne sont pas visibles à partir de la console.