Création d'un travail à partir du code source du référentiel

Vous pouvez créer votre travail directement à partir du code source qui se trouve dans un référentiel Git avec la console IBM Cloud® Code Engine et l'interface de ligne de commande. Découvrez les avantages dont vous bénéficiez lorsque vous générez votre image avec Code Engine.

Création de votre travail à partir du code source du référentiel à partir de la console

Vous pouvez créer votre travail directement à partir du code source avec la console.

Avant de commencer, planifiez votre génération. Vous pouvez également rechercher des conseils pour la création d'un fichier Dockerfile. Chaque fois que vous exécutez le travail, la version la plus récente des artefacts de génération dépendants, y compris les modules de génération et l'image de conteneur, sont utilisés lors du processus de génération et sont inclus dans l'image de conteneur obtenue.

Code Engine peut automatiquement insérer (télécharger) des images dans des espaces de nom IBM Cloud® Container Registry dans votre compte et même créer un espace de nom pour vous. Pour insérer des images dans un autre compte Container Registry ou dans un compte du Docker Hub privé, voir Accès aux registres de conteneurs.

Pour plus d'informations sur les droits requis pour l'accès aux registres d'images, voir Configuration des droits pour les registres d'images.

  1. Ouvrez la console Code Engine.
  2. Sélectionnez Let's go.
  3. Sélectionnez Travail.
  4. Entrez un nom pour le travail. Affectez à votre travail un nom qui est unique dans le projet.
  5. Sélectionnez un projet dans la liste des projets disponibles. Vous pouvez aussi en créer un. Notez que vous devez disposer d'un projet sélectionné pour créer un travail.
  6. Sélectionnez Code source.
  7. Cliquez sur Spécifier les détails de génération.
  8. Sélectionnez un référentiel source, par exemple, https://github.com/IBM/CodeEngine. Étant donné que nous utilisons un exemple de source qui ne requiert pas de données d'identification, sélectionnez Nonepour l'accès du Code du référentiel. Vous pouvez éventuellement fournir un nom de branche. Si vous ne fournissez pas de nom de branche et que vous laissez la zone vide, Code Engine utilise automatiquement la branche par défaut du référentiel spécifié. Cliquez sur Suivant.
  9. Sélectionnez une stratégie et des ressources pour votre génération. Pour plus d'informations sur les options de génération, voir Planification de votre génération. Cliquez sur Suivant.
  10. Fournit des informations de registre sur l'emplacement de stockage de l'image de votre sortie de génération. Sélectionnez un emplacement de registre de conteneur, tel que IBM Registry Dallas. Si votre registre est privé, vous devez configurer l'accès à ce dernier.
  11. Sélectionnez un secret de registre existant ou créez-en un nouveau. Si vous générez votre image sur une instance IBM Cloud Container Registry qui se trouve dans votre compte, vous pouvez sélectionner Code Engine managed secret et laisser Code Engine créer et gérer le secret pour vous.
  12. Sélectionnez un espace de nom, un nom et une balise pour votre image. Si vous créez votre image sur une instance IBM Cloud Container Registry qui se trouve dans votre compte, vous pouvez sélectionner un espace-noms existant ou laisser Code Engine créer et gérer l'espace de nom pour vous.
  13. Cliquez sur Terminé.
  14. Modifiez les valeurs par défaut des variables d'environnement ou des paramètres d'exécution. Pour plus d'informations sur ces options, voir Options de création et d'exécution d'un travail.
  15. Cliquez sur Créer.
  16. Une fois l'exécution de votre génération soumise, l'image du conteneur généré est envoyée à Container Registry, puis votre travail peut faire référence à l'image générée. Lorsque le travail est prêt, cliquez sur Soumettre le travail pour exécuter le travail en fonction de la configuration en cours.

Les exécutions de génération terminées sont automatiquement supprimées. Lorsque votre exécution de génération est basée sur la configuration de génération, cette exécution de génération est supprimée au bout de 3 heures si l'exécution de génération aboutit. Si l'exécution de la génération échoue, elle est supprimée au bout de 48 heures.

Maintenant que vous avez créé votre travail et exécuter votre travail, vous pouvez afficher les détails de votre configuration de travail et de votre travail à partir de votre page de travail.

Besoin d'aide ? Consultez la rubrique Conseils relatifs au traitement des incidents liés aux générations.

Création de votre travail à partir du code source du référentiel avec l'interface de ligne de commande

Vous pouvez créer votre travail directement à partir du code source du référentiel avec l'interface de ligne de commande. Utilisez la commande job create pour générer une image à partir de votre source de référentiel Git et définissez la configuration de votre travail.

Avant de commencer

Dans ce scénario, Code Engine génère une image à partir de votre source de référentiel Git, télécharge automatiquement l'image dans votre registre de conteneur, puis crée votre configuration de travail pour faire référence à cette image générée à l'aide de la commande job create. Vous devez fournir uniquement un nom pour le travail et l'URL du référentiel Git si l'image doit être située dans un compte IBM Cloud Container Registry. Dans ce cas, Code Engine gère l'espace de nom pour vous. Toutefois, si vous souhaitez utiliser un registre de conteneurs différent, vous devez spécifier l'image et un secret de registre pour ce registre de conteneurs. Utilisez la commande ibmcloud ce jobrun submit pour exécuter votre travail qui référence l'image générée. Pour obtenir une liste complète des options, voir les commandes ibmcloud ce job create et ibmcloud ce jobrun submit.

Pour plus d'informations sur les droits requis pour l'accès aux registres d'images, voir Configuration des droits pour les registres d'images.

  1. Utilisez la commande **job create**pour créer le travailmyjob-repo pour faire référence à une image générée à partir de la source de générationhttps://github.com/IBM/CodeEngine. Cette commande génère automatiquement l'image et télécharge l'image sur un espace de nom IBM Cloud® Container Registry dans votre compte et les exécutions de travaux de ce travail font référence à cette image construite. En spécifiant l'option--build-context-dir, la génération utilise la source dans le répertoirehelloworld. Cet exemple de commande utilise la stratégie dockerfilepar défaut et la taille de génération mediumpar défaut. Étant donné que le nom de branche du référentiel n'est pas spécifié avec l'option--build-commit, Code Engine utilise automatiquement la branche par défaut du référentiel spécifié. En ajoutant l'option--wait, cela indique que le travail doit attendre la fin de la génération d'image.

    ibmcloud ce job create --name myjob-repo --build-source https://github.com/IBM/CodeEngine --build-context-dir helloworld --wait
    

    Exemple de sortie

    Creating job 'myjob-repo'...
    Submitting build run 'myjob-repo-run-220420-15590196'...
    Creating image 'private.us.icr.io/ce--abcde-glxo4kabcde/job-myjob-repo'...
    Waiting for build run to complete...
    Build run status: 'Running'
    Build run completed successfully.
    Run 'ibmcloud ce buildrun get -n myjob-repo-run-220420-15590196' to check the build run status.
    OK
    

    Comme nous avons spécifié l'option --wait, la sortie de la commande job create fournit des informations sur la progression de l'exécution de la compilation avant la création du travail.

    Dans cet exemple, l'image générée est téléchargée dans l'espace de nom ce--abcde-glxo4kabcde dans IBM Cloud Container Registry.

    Le tableau suivant récapitule les options utilisées avec la commande job create dans cet exemple. Pour plus d'informations sur la commande et ses options, voir la commande ibmcloud ce job create.

    Description de la commande
    Option Description
    --name

    Nom du travail. Utilisez un nom unique dans le projet. Cette valeur est requise.

    • Le nom doit commencer et se terminer par un caractère alphanumérique en minuscules.
    • Le nom doit contenir 63 caractères ou moins et peut contenir des lettres, des nombres et des traits d'union (-).
    --build-source L'URL du référentiel Git qui contient votre code source ; par exemple, https://github.com/IBM/CodeEngine.
    --build-context-dir Répertoire inclus dans le référentiel qui contient le fichier de packs de construction ou le fichier Dockerfile. Cette valeur est facultative.
    --wait Indique d'attendre la fin de la génération d'image avant de créer le travail.
  2. (Facultatif) Utilisez la commande **job get**pour afficher des informations sur votre travail, y compris des informations sur la génération.

    ibmcloud ce job get --name myjob-repo
    

    Exemple de sortie

    [...]
    Name:          myjob-repo
    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-repo
    
    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-repo-run-220420-15590196
      Build Type:         git
      Build Strategy:     dockerfile-medium
      Timeout:            600
      Source:             https://github.com/IBM/CodeEngine
      Context Directory:  helloworld
      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-repo-run-220420-15590196' for details.
    
  3. Maintenant que votre travail est créé et que votre image est générée, exécutez votre travail qui référence l'image générée. Cet exemple de commande exécute l'exécution du travail myjobrun-repoen fonction de la configuration de travail myjob-repo.

    ibmcloud ce jobrun submit --name myjobrun-repo --job myjob-repo
    
  4. (Facultatif) Affichez les détails de l'exécution de votre travail.

    ibmcloud ce jobrun get --name myjobrun-repo
    

    Exemple de sortie

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

Maintenant que votre travail est créé et exécuté à partir du code source du référentiel, vous pouvez mettre à jour le travail pour répondre à vos besoins à l'aide de la commandeibmcloud ce job update. Pour plus d'informations sur la mise à jour des travaux, voir Mise à jour d'un travail. Si vous souhaitez mettre à jour votre source à utiliser avec votre travail, vous devez fournir l'option --build-source dans la commande job update.

Lorsque votre travail est créé à partir du code source du référentiel ou à partir de la source locale à l'aide de l'interface de ligne de commande, l'exécution de génération résultante n'est pas basée sur une configuration de génération. Les exécutions de génération terminées sont automatiquement supprimées. Les exécutions de génération qui ne sont pas basées sur une configuration de génération sont supprimées après 1 heure si l'exécution de génération aboutit. Si l'exécution de la génération échoue, elle est supprimée au bout de 24 heures. Vous pouvez uniquement afficher des informations sur cette exécution de génération à l'aide de l'interface de ligne de commande. Vous ne pouvez pas afficher cette exécution de génération dans la console.

Etapes suivantes

  • Après avoir créé votre travail, soumettez le travail pour l'exécuter. Voir Exécution d'un travail. Vous pouvez exécuter votre travail plusieurs fois.

  • 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, conformément à la norme OCI(Open Container Initiative), vous ne devez fournir qu'une référence à l'image, qui pointe vers l'emplacement de votre registre de conteneurs lorsque vous créez (ou mettez à jour) votre travail. Vous pouvez créer (ou mettre à jour) votre tâche à partir d'images contenues dans un registre public ou privé, puis accéder à l'image référencée lors de 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 mieux contrôler la construction de votre image, vous pouvez choisir de construire l'image avec Code Engine avant de créer (ou de mettre à jour) votre tâche et de l'exécuter.

    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 ? Consultez les exemples pour le IBM Cloud Code Engine GitHub.