Envoi d'événements GitHub à une application
Vous pouvez configurer un webhook pour envoyer un événement GitHub, tel qu'un nouveau problème ou une validation dans votre application IBM Cloud® Code Engine. Votre application doit utiliser un noeud final public pour recevoir les demandes POST de webhook.
Pour plus d'informations sur les webhooks GitHub, voir A propos des webhooks. Pour plus d'informations sur GitHub, voir GitHub Docs.
Prérequis
Avant de commencer, configurez votre compte et installez l'environnement de ligne de commande. Vous pouvez utiliser la console pour créer votre application, mais cet exemple utilise l'interface de ligne de commande.
- Vérifiez que vous disposez d'un compte Paiement à la carte.
- Configurez votre environnement d'interface de ligne de commande Code Engine.
- Créez et utilisez un projet.
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.
Création d'une application
Créez une application pour recevoir vos événements GitHub appelés my-github-app qui utilise une image appelée github avec la commande ibmcloud ce app create.
Cette application consigne chaque événement de validation qui se produit dans le référentiel GitHub. L'image est générée à partir de github.go, disponible dans le référentiel GitHub Samples for IBM Cloud Code Engine GitHub.
ibmcloud ce application create --name my-github-app --image icr.io/codeengine/github --min-scale 1
Après la création de votre application, vérifiez que votre application est à l'état Ready et recherchez l'URL de l'application.
ibmcloud ce application get --name my-github-app
L'URL de l'application se trouve dans la zone URL de l'exemple de sortie.
Name: my-github-app
ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name: myproject
Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111
Age: 20h
Created: 2022-11-28T13:16:49-06:00
URL: https://my-github-app.abcdabcdabc.us-south.codeengine.appdomain.cloud
Cluster Local URL: http://my-github-app.abcdabcdabc.svc.cluster.local
Console URL: https://cloud.ibm.com/codeengine/project/us-south/abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f/application/my-github-app/configuration
Status Summary: Application deployed successfully
...
Création d'un webhook
Créez un webhook GitHub pour abonner votre application aux événements GitHub. Vous pouvez vous abonner à un ou plusieurs événements de webhook. Lorsqu'un événement auquel vous vous abonnez se produit, GitHub envoie un contenu à votre application. Pour plus d'informations, voir Webhook events and payloads.
Pour créer un webhook GitHub, procédez comme suit.
- Accédez à votre référentiel GitHub et sélectionnez Paramètres.
- Sélectionnez Webhooks-> Add webhook. Notez que votre référentiel GitHub peut utiliser des points d'ancrage au lieu de Webhooks.
- Entrez l'URL de votre application en tant qu' URL de contenu.
- Sélectionnez le Type de contenu requis par votre application. Si vous utilisez l'exemple d'application
github, sélectionnezapplication/jsoncomme type de contenu. - Facultatif. Ajoutez un secret à votre webhook. Pour plus d'informations, voir Sécurisation de vos webhooks.
- Sélectionnez cette option pour Activer la vérification SSL.
- Sélectionnez Just a push event pour déclencher votre webhook.
- Assurez-vous que l'option Actif est sélectionnée. Vous pouvez désactiver votre webhook sans le supprimer en supprimant la coche.
- Cliquez sur Ajouter un webhook.
Une fois que vous avez terminé, vérifiez que votre application est abonnée en vérifiant les fichiers journaux de l'application. Pour plus d'informations sur les journaux, voir Affichage des journaux à l'aide de l'interface de ligne de commande.
ibmcloud ce app logs --name my-github-app
Dans l'exemple de sortie, recherchez le port sur lequel votre application est à l'écoute ainsi que le type d'événement.
my-github-app-00001-deployment-abcdabcdabc-1234/user-container:
2022/12/02 17:07:27 Listening on port 8080
2022/12/02 17:10:08 Event Type: ping
2022/12/02 17:10:08 Not a 'push' event so exit
Notez que si vos applications sont mises à l'échelle à zéro, vous risquez de recevoir un message indiquant qu'aucune instance de votre application n'est en cours d'exécution. Cette application ayant une échelle minimale de 1, elle a toujours une instance en cours d'exécution.
Testez votre événement GitHub
Testez votre webhook en déclenchant l'événement attendu par votre application. Dans ce cas, l'application s'attend à ce qu'une modification soit validée dans le référentiel GitHub.
-
Dans votre référentiel GitHub, effectuez une action qui déclenche votre webhook. Pour l'application
github, validez une modification dans un fichier du référentiel. -
Après une minute ou deux, recherchez les journaux de votre application. Si votre application est mise à l'échelle à zéro, vous pouvez voir un message indiquant que votre application n'a pas d'instances en cours d'exécution. Votre application augmente lorsqu'elle reçoit un événement. Réessayez dans quelques minutes. Pour plus d'informations sur les journaux, voir Affichage des journaux à l'aide de l'interface de ligne de commande.
ibmcloud ce app logs --name my-github-appPar exemple, le résultat suivant est affiché.
2022/11/28 19:45:28 Event: { "ref": "refs/heads/main", "before": "0a11d22ebdaacdbb7bf5fdb6c92565c7c00fa97b", "after": "af363efb8568874fe219bc73f3bccd0f4991907f", "repository": { ... "committer": { "name": "GitHub", "email": "noreply@github.com", "username": "web-flow" }, "added": [], "removed": [], "modified": [ "README.md" ] } } 2022/11/28 19:45:28 kersten1 committed "af363efb8568874fe219bc73f3bccd0f4991907f" to "refs/heads/main" branch 2022/11/28 19:45:28 ibmcloud ce buildrun submit ...Votre sortie dépend de l'application que vous utilisez et du référentiel GitHub qui contient le webhook.
Votre webhook fonctionne ! A présent, votre application reçoit une notification chaque fois que vous validez un fichier dans votre référentiel GitHub.
Cette application définit l'échelle minimale à 1 de sorte qu'une instance de l'application soit toujours en cours d'exécution. Vous pouvez définir l'échelle sur 0 en mettant à jour l'application à l'aide de la commande suivante. ibmcloud ce app update --name my-github-app --min-scale 0:
Nettoyer
Une fois ce tutoriel terminé, vous pouvez nettoyer les ressources que vous avez créées avec les commandes suivantes.
-
Supprimer votre application
ibmcloud ce app delete --name my-github-appLorsque vous supprimez votre application, les fichiers de génération associés sont également supprimés.
-
Supprimez le webhook en ouvrant vos paramètresGitHub-> Webhooks et en cliquant sur Supprimer après le nom du webhook.
-
Supprimer les images que la construction a créées à partir de IBM Cloud Container Registry
- Accédez à Registry dans la console IBM Cloud.
- Recherchez l'archive et l'image associées à votre application en recherchant votre nom d'application.
- Sélectionnez l'archive et l'image et supprimez.