IBM Cloud Docs
Génération d'applications à l'aide de packs de construction

Génération d'applications à l'aide de packs de construction

Une génération, ou génération d'image, est un mécanisme que vous pouvez utiliser pour créer une image de conteneur à partir de votre code source. Code Engine prend en charge la génération à partir d'un Dockerfile et de Cloud Native Buildpacks.

Avant de commencer

Tous les utilisateurs Code Engine doivent avoir un compte de paiement à la carte. Les tutoriels peuvent entraîner des coûts. Utilisez l'estimateur de coût pour générer une estimation du coût en fonction de l'utilisation envisagée. Pour plus d'informations, voir Tarification Code Engine.

Configuration de l'accès au registre

La sortie de la génération étant une image stockée dans un registre de conteneur, vous devez configurer l'accès à un registre d'images pour Code Engine. Pour stocker une image dans Docker Hub, créez l'accès au registre à l'aide de la commande ibmcloud ce secret create --format registry. Dans l'exemple suivant, utilisez dockerhub comme nom d'accès au registre et spécifiez votre ID Docker Hub comme nom d'utilisateur. Pour le mot de passe Docker Hub, vous pouvez spécifier votre mot de passe Docker Hub ou un jeton d'accès.

ibmcloud ce secret create --format registry --name dockerhub --server https://index.docker.io/v1/ --username username --password password

Exemple de sortie

Creating registry secret 'dockerhub'...
OK

Pour plus d'informations, voir la documentation sur l'ajout d'un accès au registre.

Création d'une génération

Créez une génération contenant des informations sur le code source de votre application ou de votre travail. Les informations peuvent inclure l'emplacement et les informations d'accès du travail ou de l'application.

La commande ibmcloud ce build create ne crée pas d'image, mais crée la configuration pour générer une image. La commande ibmcloud ce buildrun submit fait référence à la configuration de génération pour créer une image. Les options que vous spécifiez dans la commande build create ou build update ne sont pas validées ou utilisées pour créer une image tant que la commande buildrun submit 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.

Dans l'exemple suivant, pour créer la configuration de génération, utilisez la commande ibmcloud ce build create. Utilisez tutorial-build comme nom de génération et indiquez https://github.com/IBM/CodeEngine comme emplacement du code source et /s2i-buildpacks comme dossier de répertoire de contexte contenant votre source. Utilisez le secret de registre dockerhub créé précédemment pour l'accès au registre. Indiquez buildpacks comme stratégie de génération pour compiler le code source et small comme taille de génération.

ibmcloud ce build create --name tutorial-build --source https://github.com/IBM/CodeEngine --commit main --context-dir /s2i-buildpacks --registry-secret dockerhub --image docker.io/<your_docker_ID>/tutorial --size small --strategy buildpacks

Exemple de sortie

Creating build 'tutorial-build'...
OK

L'option size indique la taille de la génération, qui détermine la quantité de ressources utilisées. Les valeurs valides sont small, medium, large, xlarge et xxlarge. size reflète les exigences de génération pour le code source de votre application ou de votre travail. Si la génération échoue en raison d'un manque de mémoire ou d'espace disque, ou qu'elle n'est pas assez rapide, essayez de passer à une taille plus grande. Une taille de génération plus importante signifie également que davantage de coeurs de mémoire et d'UC sont affectés au processus de génération. L'augmentation de cette taille peut probablement accélérer le processus de génération, mais cette action augmente également le coût. Pour plus d'informations sur les générations, voir Conseils relatifs au traitement des incidents liés aux générations.

Soumission d'une exécution de génération

Maintenant que votre configuration de génération est créée, vous pouvez exécuter une génération reposant sur cette configuration à l'aide de la commande ibmcloud ce buildrun submit. Dans l'exemple suivant, faites référence à la configuration de génération tutorial-build et soumettez l'exécution de génération. Le système génère un nom d'exécution de génération unique. Vous pouvez éventuellement fournir un nom pour votre exécution de génération à l'aide de l'option --name, ce qui peut être utile car le nom de l'exécution de génération est requis pour obtenir des détails sur cette dernière. Dans cet exemple, le système génère automatiquement le nom de l'exécution de génération.

ibmcloud ce buildrun submit --build tutorial-build

Exemple de sortie

Submitting build run 'tutorial-build-run-851026-090000000'...
Run 'ibmcloud ce buildrun get -n tutorial-build-run-851026-090000000' to check the build run status.
OK

Pour vérifier le statut de l'exécution de génération, utilisez la commande buildrun get ibmcloud ce buildrun get pour afficher des détails sur l'exécution de génération.

ibmcloud ce buildrun get --name tutorial-build-run-851026-090000000

Exemple de sortie

Getting build run 'tutorial-build-run-851026-090000000'...
[...]
OK

Name:          tutorial-build-run-851026-090000000
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name:  myproject
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           3m42s  
Created:       2021-03-14T14:31:21-05:00  

Summary:  Succeeded  
Status:   Succeeded  
Reason:   Succeeded  

La génération est terminée lorsque le statut est Succeeded.

S'il y a un problème avec l'exécution de génération, utilisez la commande ibmcloud ce buildrun logs pour afficher les journaux relatifs à l'exécution de génération.

ibmcloud ce buildrun logs --buildrun tutorial-build-run-851026-090000000

Exemple de sortie

Getting build run 'tutorial-build-run-851026-090000000'...
Getting instances of build run 'tutorial-build-run-851026-090000000'...
Getting logs for build run 'tutorial-build-run-851026-090000000'...
OK

tutorial-build-run-851026-090000000-7vlrw-pod-c9t6g/step-git-source-source-7tbwh:
{"level":"info","ts":1610378702.42616,"caller":"git/git.go:165","msg":"Successfully cloned https://github.com/IBM/CodeEngine @ 6b66f2bc3e1277c2e6475608a9c50335712116e0 (grafted,  HEAD, origin/main) in path /workspace/source"}
{"level":"info","ts":1610378703.5453625,"caller":"git/git.go:203","msg":"Successfully initialized and updated submodules in path /workspace/source"}
[...]

Votre image de conteneur a été générée correctement à partir du code source en utilisant la stratégie de génération de packs de construction !

Utilisation de l'image de conteneur

Maintenant que votre image de conteneur a été générée et qu'elle a été envoyée dans l'emplacement de registre de conteneur configuré, vous pouvez la déployer dans Code Engine. Par exemple, vous pouvez créer une application Code Engine qui utilise l'image créée.

ibmcloud ce application create --name tutorial-app --image <your_docker_ID>/tutorial

Exemple de sortie

Creating application 'tutorial-app'...
[...]

Etapes suivantes pour les packs de construction

Pour plus d'informations, voir Déploiement d'applications.

Votre projet de code source utilise un fichier Dockerfile ? Suivez les mêmes étapes, mais spécifiez la stratégie de génération Dockerfile afin de générer une image pour votre application ou votre travail. Pour plus d'informations sur les fichiers Dockerfile, voir Ecrire un fichier Dockerfile pour Code Engine.

Vous recherchez d'autres exemples de code ? Consultez les exemples pour IBM Cloud Code Engine GitHub.