Créez une configuration de génération qui extrait la source du référentiel public

Si votre source se trouve dans un référentiel public, créez une configuration de génération avec des paramètres qui incluent des informations sur l'emplacement de l'extraction à partir d'un référentiel public. Pour le résultat de la construction, vous pouvez choisir de spécifier les détails du registre ainsi qu'un secret de registre pour accéder à votre image construite dans le registre. Vous pouvez également choisir de laisser Code Engine prendre soin de construire l'image pour vous à partir de votre source et de stocker l'image dans IBM Cloud Container Registry. Dans ce cas, il n'est pas nécessaire de spécifier un secret de registre ou l'emplacement du registre d'images.

La création d'une configuration de génération ne crée pas d'image mais crée la configuration pour générer une image. Vous devez alors exécuter une génération qui fait référence à la configuration de génération pour créer une image. La configuration de génération n'est pas validée ou utilisée pour créer une image tant que la génération n'est pas exécutée. La configuration de génération permet plusieurs générations ultérieures d'une image, par exemple lorsque des modifications sont appliquées au référentiel source.

Vous pouvez choisir d'ignorer certains modèles de fichier à partir de votre code source à l'aide du fichier .ceignore, qui se comporte de la même manière qu'un fichier .gitignore. Par exemple, les entrées d'un fichier .ceignorepour une application node.js peuvent inclure node_moduleset.npm. Pour plus d'exemples de modèles de fichiers à ignorer, consultez le dépôt .gitignore deGitHub.

Création d'une configuration de génération à partir de la console (référentiel public)

  1. Accédez au tableau de bord Code Engine.

  2. Sélectionnez le projet dans lequel vous avez ajouté votre registre de conteneur.

  3. Sur la page du projet, cliquez sur Générations d'image.

  4. Dans l'onglet Génération d'image, cliquez sur Créer. Le panneau latéral Spécifier les détails de génération s'ouvre pour vous permettre d'entrer les détails de votre génération.

  5. Dans la section Source, entrez un nom pour votre génération, l'URL de votre référentiel source et votre accès au référentiel de code.

    • Si votre code se trouve dans un répertoire public, utilisez une URL HTTPS et sélectionnez Aucun pour l'accès au répertoire de code. Exemple d'URL HTTPS : https://github.com/IBM/CodeEngine.
    • Si votre code se trouve dans un référentiel privé, utilisez une URL SSH pour le référentiel de code et sélectionnez le nom d'un accès au référentiel de code existant ou créez un accès au référentiel de code. Exemple d'URL SSH : git@github.com:IBM/CodeEngine.git.
    • Le cas échéant, sélectionnez un nom de branche source. 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é. Vous pouvez entrer n'importe quel autre nom de branche, balise ou ID de validation.

    Cliquez sur Next pour continuer.

  6. Dans la section Stratégie, sélectionnez la stratégie que vous souhaitez utiliser.

    • Si vous sélectionnez Fichier Dockerfile, vous pouvez également spécifier un chemin d'accès alternatif pour votre fichier Dockerfile.
    • Sélectionnez la taille de votre génération sous Ressources de génération.

    Cliquez sur Next pour continuer.

  7. Dans la section Sortie, entrez les détails de l'image de votre conteneur.

    • Sélectionnez un secret de registre existant ou cliquez sur Créer un secret de registre pour en ajouter un nouveau.
    • Si vous créez votre image pour une instance Container Registry qui se trouve dans votre compte, vous pouvez sélectionner Code Engine managed secret et Code Engine créera et gérera le secret pour vous.
    • Sélectionnez ensuite l'espace de nom, le référentiel et la balise de l'image que vous souhaitez générer. Vous pouvez choisir Code Engine pour créer et gérer l'espace de noms dans Container Registry pour vous.
    • Si votre image existe dans Container Registry, vous pouvez sélectionner à partir des images existantes ou entrer un nouveau référentiel ou une nouvelle étiquette.
  8. Cliquez sur Terminé pour terminer la création de la génération.

Après avoir créé la configuration de génération, vous devez exécuter la génération pour créer le fichier image. Une fois votre fichier image créé, vous pouvez déployer une application ou exécuter un travail avec votre fichier image nouvellement généré.

Création d'une configuration de génération avec l'interface de ligne de commande (référentiel public )

Pour créer une configuration de génération à l'aide de l'interface de ligne de commande, utilisez la commande build create. Pour obtenir la liste complète des options, voir la commande ibmcloud ce build create.

Avec la commande**build create**, vous pouvez choisir de laisser Code Engine prendre soin de construire l'image à partir de votre source pour vous, puis de stocker l'image dans IBM Cloud Container Registry. Dans ce cas d'accès automatique, il n'est pas nécessaire de spécifier un secret de registre ou l'emplacement du registre d'images. Vous pouvez également spécifier l'emplacement de votre image de compilation et fournir un secret de registre afin que Code Engine puisse accéder au résultat de la compilation et l'envoyer à votre registre.

Création d'une configuration de génération avec l'interface de ligne de commande (avec source de référentiel public et accès automatique au registre)

Dans ce scénario, Code Engine génère une image à partir de votre source de référentiel Git publique et télécharge automatiquement l'image sur IBM Cloud Container Registry avec un accès automatique. Voir Configuration des droits pour les registres d'images pour plus d'informations sur la définition des droits requis pour Code Engine pour accéder automatiquement à ces images dans Container Registry.

Avant de commencer

  1. Créez une configuration de génération pour générer une image à partir d'un référentiel Git public et laissez Code Engine stocker automatiquement et accéder à l'image. Par exemple, la commande **build create**suivante crée une configuration de génération appeléehelloworld-build qui se construit à partir de la source dans le fichier public du référentiel Githttps://github.com/IBM/CodeEngine. Dans cet exemple, la commande utilise la stratégie dockerfile par défaut et la taille de génération medium par défaut. Étant donné que le nom de branche du référentiel n'est pas spécifié avec l'option--commit, Code Engine utilise automatiquement la branche par défaut du référentiel spécifié, qui est main pour ce référentiel Git. En ne spécifiant pas l'emplacement du registre d'images ou un secret de registre, Code Engine pousse la sortie de la compilation vers IBM Cloud Container Registry avec un accès automatique.

    ibmcloud ce build create --name helloworld-build --source https://github.com/IBM/CodeEngine --context-dir /hello
    

    Exemple de sortie

    Creating build helloworld-build...
    OK
    

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

    Description de la commande
    Option Description
    --name Nom de la génération. Utilisez un nom unique dans le projet. Cette valeur est requise.
    -Le nom doit commencer par une lettre minuscule.
    -Le nom doit se terminer par un caractère alphanumérique en minuscules.
    -Le nom doit comporter 55 caractères ou moins et peut contenir des lettres, des nombres et des traits d'union (-).
    --source L'URL du référentiel Git qui contient votre code source ; par exemple, https://github.com/IBM/CodeEngine.
    --context-dir Répertoire inclus dans le référentiel qui contient le fichier de packs de construction ou le fichier Dockerfile. Spécifiez cette valeur si votre fichier de packs de construction ou votre fichier Dockerfile se trouve dans un sous-répertoire. Cette valeur est facultative.
  2. Utilisez la commande build get pour vérifier l'état de votre génération.

    ibmcloud ce build get --name helloworld-build
    

    Exemple de sortie

    Remarquez le nom généré pour l'image, et que le nom du secret de registre créé automatiquement est du format ce-auto-icr-private-<region>.

    Getting build 'helloworld-build'
    OK
    
    Name:          helloworld-build  
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d15h
    Created:       2022-05-24T09:58:43-05:00  
    Build Type:    git  
    Status:        Succeeded  
    Reason:        all validations succeeded
    
    Image:              private.us.icr.io/ce--e97a8-odof2whblw5/build-helloworld-build
    Registry Secret:    ce-auto-icr-private-us-south  
    Build Strategy:     dockerfile-medium
    Timeout:            10m0s
    Source:             https://github.com/IBM/CodeEngine
    Commit:             main
    Context Directory:  /hello
    Dockerfile:         Dockerfile
    
    

Après avoir créé la configuration de génération, vous devez exécuter la génération pour créer le fichier image. Une fois votre fichier image créé, vous pouvez déployer une application ou exécuter un travail avec votre fichier image nouvellement généré.

Création d'une configuration de génération à l'aide de l'interface de ligne de commande (avec la source public du référentiel et l'accès fourni par l'utilisateur au registre)

Dans ce scénario, Code Engine génère une image à partir de votre source de référentiel Git publique, puis télécharge l'image dans votre registre de conteneur avec l'accès au registre que vous fournissez.

Avant de commencer

  1. Créer une configuration de construction pour construire une image à partir d'un repo Git public et spécifier l'emplacement du registre d'images pour la sortie de la construction avec un secret de registre. Avec la commande**build create**, spécifiez l'option--image pour indiquer l'emplacement du registre d'images et spécifiez l'option --registry-secretpour accéder au registre. Par exemple, la commande suivante crée une configuration de génération appelée helloworld-build2 qui est générée à partir du Git public https://github.com/IBM/CodeEngine et stocke l'image dans us.icr.io/mynamespace/codeengine-helloworld à l'aide du secret de registre myregistry. Dans cet exemple, la commande utilise la stratégie dockerfile par défaut et la taille de génération medium par défaut. Étant donné que le nom de branche du référentiel n'est pas spécifié avec l'option--commit, Code Engine utilise automatiquement la branche par défaut du référentiel spécifié, qui est main pour ce référentiel Git.

    Si vous utilisez l'option --strategy avec la valeur de dockerfile, assurez-vous que l'option --dockerfile soit correctement définie sur le nom de dockerfile. La valeur par défaut de l'option --strategy est Dockerfile.

    ibmcloud ce build create --name helloworld-build2 --image us.icr.io/mynamespace/codeengine-helloworld --registry-secret myregistry --source https://github.com/IBM/CodeEngine --context-dir /hello
    

    Exemple de sortie

    Creating build helloworld-build2...
    OK
    

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

    Description de la commande
    Option Description
    --name Nom de la génération. Utilisez un nom unique dans le projet. Cette valeur est requise.
    -Le nom doit commencer par une lettre minuscule.
    -Le nom doit se terminer par un caractère alphanumérique en minuscules.
    -Le nom doit comporter 55 caractères ou moins et peut contenir des lettres, des nombres et des traits d'union (-).
    --image Emplacement du registre d'images. Le format de l'emplacement doit être REGISTRY/NAMESPACE/REPOSITORY ou REGISTRY/NAMESPACE/REPOSITORY:TAG , où TAG est facultatif. Si TAG n'est pas spécifié, la valeur par défaut est latest.
    --registry-secret Le secret du registre qui est utilisé pour accéder au registre. Vous pouvez ajouter le secret de registre en exécutant la commande secret create --format registry. Le secret de registre est utilisé pour s'authentifier auprès d'un registre privé.
    --source L'URL du référentiel Git qui contient votre code source ; par exemple, https://github.com/IBM/CodeEngine.
    --context-dir Répertoire inclus dans le référentiel qui contient le fichier de packs de construction ou le fichier Dockerfile. Spécifiez cette valeur si votre fichier de packs de construction ou votre fichier Dockerfile se trouve dans un sous-répertoire. Cette valeur est facultative.
  2. Utilisez la commande build get pour vérifier l'état de votre génération.

    ibmcloud ce build get --name helloworld-build2
    

    Exemple de sortie

    Getting build 'helloworld-build2'
    OK
    
    Name:          helloworld-build2  
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d15h
    Created:       2021-03-14T14:48:19-05:00  
    Status:        Succeeded  
    Reason:        all validations succeeded
    
    Image:              us.icr.io/mynamespace/codeengine-helloworld
    Registry Secret:    myregistry
    Build Strategy:     dockerfile-medium
    Timeout:            10m0s
    Source:             https://github.com/IBM/CodeEngine
    Commit:             main
    Context Directory:  /hello
    Dockerfile:         Dockerfile
    
    

Après avoir créé la configuration de génération, vous devez exécuter la génération pour créer le fichier image. Une fois votre fichier image créé, vous pouvez déployer une application ou exécuter un travail avec votre fichier image nouvellement généré.

Si vous recevez un échec de validation de commande, vérifiez que votre secret existe. Si vous faites référence à un secret de registre --registry-secret pour votre image et que le secret n'existe pas, voir Accès aux registres des conteneurs. Pour plus d'informations sur les générations, voir Conseils relatifs au traitement des incidents liés aux générations.