Exécution d'un travail
Après avoir créé votre travail, vous pouvez l'exécuter en fonction de sa définition ou avec des propriétés de substitution. Exécutez votre travail à partir de la console ou à l'aide de l'interface de ligne de commande.
À 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 travaux par lots, voir Charge de travail des travaux par lots. 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.
Les exécutions de tâches créées par des abonnements sont supprimées au bout de dix minutes. Pour plus d'informations sur les abonnements, voir Initiation aux abonnements.
Les travaux terminés sont automatiquement supprimés au bout d'une semaine.
Exécution d'un travail à partir de la console
Lorsque vous créez un travail, vous pouvez l'exécuter immédiatement. Vous pouvez toutefois soumettre et soumettre à nouveau un travail à tout moment. Vous pouvez également soumettre et soumettre à nouveau un travail précédemment créé.
-
Accédez à la page de votre travail.
- Sur la page « Projets » d' Code Engine, cliquez sur le nom de votre projet.
- Cliquez sur « Tâches », puis sur l'onglet « Tâches ».
- Cliquez sur le nom de la tâche que vous souhaitez exécuter.
-
Cliquez sur Soumettre un travail pour ouvrir la boîte de dialogue Soumettre un travail. Examinez et modifiez éventuellement les valeurs de configuration par défaut (Instances, UC, Mémoire, Nombre de nouvelles tentatives de travail et Délai d'attente du travail). Pour plus d'informations sur ces options, voir Options de création et d'exécution d'un travail.
-
Cliquez sur Soumettre un travail pour exécuter votre travail. Le système affiche le statut des instances de votre travail sur la page des détails du travail.
-
Si l'une des instances de votre travail ne s'exécute pas, résolvez l'erreur, puis cliquez sur Réexécuter les index qui ont échoué pour réexécuter le travail pour les index qui ont échoué. Dans le volet « Soumettre une tâche », vérifiez les valeurs de configuration et modifiez-les si nécessaire. La section « Index du tableau » répertorie automatiquement les index des instances d'exécution de tâches ayant échoué. Après avoir examiné et éventuellement modifié les valeurs de configuration, cliquez sur Soumettre le travail pour exécuter votre travail.
Pour résoudre les erreurs courantes liées aux index d'exécution des tâches, consultez la section « Comprendre les causes d'échec des index d'exécution des tâches ».
Vous pouvez également réexécuter des travaux existants. Pour exécuter à nouveau une exécution de travail spécifique, cliquez sur l'onglet Exécution de travail, puis sur le nom de l'exécution de travail que vous souhaitez utiliser. Cliquez sur Rerun pour exécuter à nouveau ce travail.
Vous pouvez afficher les journaux de travail après avoir ajouté des fonctions de journalisation. Pour plus d'informations, voir Affichage des journaux.
La variable d'environnement JOB_INDEX est injectée automatiquement dans chaque instance de votre travail à chaque fois que celui-ci est exécuté. Pour plus d'informations sur les variables d'environnement définies par Code Engine,
voir Je vois des mappes de configuration que je n'ai pas créés. Puis-je les supprimer ?.
Exécution d'un travail via l'interface de ligne de commande
Avant de commencer
- Configurez votre environnement Code Engine.
- Créez un travail.
Pour exécuter un travail à l'aide de l'interface de ligne de commande, utilisez la commande jobrun submit. Pour obtenir la liste complète des options, voir la commande ibmcloud ce jobrun submit.
Avec l'interface de ligne de commande, vous pouvez exécuter un travail en fonction d'une configuration de travail ou exécuter un travail sans créer au préalable une configuration de travail.
Exécution d'un travail via l'interface de ligne de commande en fonction d'une configuration de travail
La création d'une configuration de travail vous permet d'exécuter plus facilement votre travail à plusieurs reprises.
Par exemple, la commande jobrun submit suivante crée cinq nouvelles instances pour exécuter l'image de conteneur spécifiée dans la configuration de travail myjob spécifiée. Pour référencer une configuration
de travail définie, utilisez l'option --job. 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. Pour les travaux, la valeur par défaut pour cpu est 1 et la valeur par défaut pour memory est 4G. Les limites de ressources et les demandes
sont appliquées par instance ; chaque instance obtient donc 4 Go de mémoire et 1 UC virtuelle (vCPU). Ce travail alloue 5 * 4 G = 20 Go de mémoire et 5 * 1 vCPU = 5 vCPU.
ibmcloud ce jobrun submit --name testjobrun --job myjob --array-indices "1 - 5"
Le tableau suivant récapitule les options utilisées avec la commande jobrun submit dans cet exemple. Pour plus d'informations sur la commande et ses options, voir la commande ibmcloud ce jobrun submit.
| Option | Description |
|---|---|
--name |
Nom de cette exécution de travail. Les valeurs
|
--job |
Nom du travail à exécuter. Cette valeur est obligatoire si vous ne spécifiez pas les valeurs --name et --image. |
--array-indices |
Spécifie les index des instances utilisées pour exécuter la tâche. Indiquez la liste ou la plage d'index séparés par des tirets (-) ou des virgules (,); par exemple, 1,3,6,9 ou 1-5,7-8,10. La valeur maximale
est 999999. Cette valeur est facultative. La valeur par défaut est 0. |
La variable d'environnement JOB_INDEX est injectée automatiquement dans chaque instance de votre travail à chaque fois que celui-ci est exécuté. Pour plus d'informations sur les variables d'environnement définies par Code Engine,
voir Je vois des mappes de configuration que je n'ai pas créés. Puis-je les supprimer ?.
Exécution d'un travail via l'interface de ligne de commande sans création préalable d'une configuration de travail
Avec l'interface de ligne de commande, vous pouvez soumettre un travail sans créer d'abord une configuration de travail. Vous pouvez dans les commandes jobrun submit et jobrun resubmit spécifier les mêmes options
de configuration que celles disponibles avec la commande job create.
Par exemple, la commande ibmcloud ce jobrun submit suivante soumet une exécution de travail pour faire référence à l'image us.icr.io/mynamespace/myhello_bld à l'aide des informations d'accès de myregistry. Etant donné que cette exécution de travail ne fait pas référence à une configuration de travail définie, vous devez spécifier des valeurs pour les options --name et image. Utilisez --name pour indiquer le nom de cette exécution de travail et --image pour indiquer le nom de l'image utilisée pour cette exécution de travail. L'option --array-indices crée cinq nouvelles instances pour exécuter l'image de conteneur. Pour les exécutions de travail, la valeur par défaut pour cpu est 1 et la valeur par défaut pour memory est 4G. Les limites
de ressources et les demandes sont appliquées par instance ; chaque instance obtient donc 4 Go de mémoire et 1 UC virtuelle (vCPU). Ce travail alloue 5 * 4 G = 20 G de mémoire et 5 * 1 UC virtuelle = 5 UC virtuelles.
ibmcloud ce jobrun submit --name myhellojob-jobruna --image us.icr.io/mynamespace/myhello_bld --registry-secret myregistry --array-indices "1 - 5"
Exécutez la commande jobrun get -n myhellojob-jobruna pour vérifier le statut d'exécution du travail.
Exemple de sortie
[...]
Name: myhellojob-jobruna
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
Image: us.icr.io/mynamespace/myhello_bld
Resource Allocation:
CPU: 1
Ephemeral Storage: 400M
Memory: 4G
Registry Secrets:
myregistry
Runtime:
Mode: task
Array Indices: 1 - 5
Array Size: 5
JOP_ARRAY_SIZE Value: 5
Max Execution Time: 7200
Retry Limit: 3
Status:
Completed: 9s
Instance Statuses:
Succeeded: 5
Conditions:
Type Status Last Probe Last Transition
Pending True 16s 16s
Running True 13s 13s
Complete True 9s 9s
Events:
Type Reason Age Source Messages
Normal Updated 11s (x8 over 18s) batch-job-controller Updated JobRun "myhellojob-jobruna"
Normal Completed 11s batch-job-controller JobRun completed successfully
Instances:
Name Running Status Restarts Age
myhellojob-jobruna-1-0 0/1 Succeeded 0 18s
myhellojob-jobruna-2-0 0/1 Succeeded 0 18s
myhellojob-jobruna-3-0 0/1 Succeeded 0 18s
myhellojob-jobruna-4-0 0/1 Succeeded 0 18s
myhellojob-jobruna-5-0 0/1 Succeeded 0 18s
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.
Nouvelle soumission de votre travail via l'interface de ligne de commande
Pour soumettre à nouveau une exécution de travail en fonction de la configuration d'une exécution de travail précédente, utilisez la commande jobrun resubmit. Cette commande requiert le nom de l'exécution de travail
précédente et admet également d'autres arguments facultatifs. Pour obtenir la liste complète des options, voir la commande ibmcloud ce jobrun resubmit.
Par exemple, la commande jobrun resubmit suivante soumet à nouveau l'exécution de travail testjobrun :
ibmcloud ce jobrun resubmit --jobrun testjobrun
Exemple de sortie
Getting job run 'testjobrun'...
Getting job 'myjob'...
Rerunning job run 'myjob-jobrun-fji48'...
Run 'ibmcloud ce jobrun get -n myjob-jobrun-fji48' to check the job run status.
Par exemple, la commande jobrun resubmit suivante soumet à nouveau l'exécution de travail myhellojob-jobruna, qui a été exécutée sans créer au préalable la configuration de travail. Etant donné qu'aucune
configuration de travail n'est associée à l'exécution de travail référencée, vous devez spécifier l'option --name pour indiquer un nom pour cette exécution de travail.
ibmcloud ce jobrun resubmit --jobrun myhellojob-jobruna --name myhellojob-jobrunb
Exécutez la commande jobrun get -n myhellojob-jobrunb pour vérifier le statut d'exécution du travail.
Exemple de sortie
Getting jobrun 'myhellojob-jobrunb'...
[...]
Name: myhellojob-jobrunb
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
Image: us.icr.io/mynamespace/myhello_bld
Resource Allocation:
CPU: 1
Ephemeral Storage: 400M
Memory: 4G
Registry Secrets:
myregistry
Runtime:
Mode: task
Array Indices: 1 - 5
Array Size: 5
JOP_ARRAY_SIZE Value: 5
Max Execution Time: 7200
Retry Limit: 3
Status:
Completed: 91s
Instance Statuses:
Succeeded: 5
Conditions:
Type Status Last Probe Last Transition
Pending True 96s 96s
Running True 92s 92s
Complete True 91s 91s
Events:
Type Reason Age Source Messages
Normal Updated 93s (x7 over 97s) batch-job-controller Updated JobRun "myhellojob-jobrunb"
Normal Completed 93s batch-job-controller JobRun completed successfully
Instances:
Name Running Status Restarts Age
myhellojob-jobrunb-1-0 0/1 Succeeded 0 97s
myhellojob-jobrunb-2-0 0/1 Succeeded 0 97s
myhellojob-jobrunb-3-0 0/1 Succeeded 0 97s
myhellojob-jobrunb-4-0 0/1 Succeeded 0 97s
myhellojob-jobrunb-5-0 0/1 Succeeded 0 97s
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.
Etapes suivantes
-
Après avoir exécuter votre travail, pour afficher les détails de votre travail et de vos exécutions de travail, voir Accès aux détails du travail.
-
Maintenant que votre travail est créé, envisagez de faire vos travaux en fonctions des événements. En utilisant des abonnements à des événements, vous pouvez déclencher vos travaux par des calendriers périodiques ou configurer votre travail pour qu'il réagisse à des événements comme des téléchargements de fichiers.
-
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 createet que vous avez spécifié l'option--build-sourcepour 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écutezibmcloud 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.
-
Vous recherchez d'autres exemples de code ? Découvrez le site Exemples pour le dépôt « IBM Cloud Code Engine GitHub ».