IBM Cloud Docs
Envoi d'événements GitHub à une application

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.

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.

  1. Accédez à votre référentiel GitHub et sélectionnez Paramètres.
  2. Sélectionnez Webhooks-> Add webhook. Notez que votre référentiel GitHub peut utiliser des points d'ancrage au lieu de Webhooks.
  3. Entrez l'URL de votre application en tant qu' URL de contenu.
  4. Sélectionnez le Type de contenu requis par votre application. Si vous utilisez l'exemple d'application github, sélectionnez application/json comme type de contenu.
  5. Facultatif. Ajoutez un secret à votre webhook. Pour plus d'informations, voir Sécurisation de vos webhooks.
  6. Sélectionnez cette option pour Activer la vérification SSL.
  7. Sélectionnez Just a push event pour déclencher votre webhook.
  8. Assurez-vous que l'option Actif est sélectionnée. Vous pouvez désactiver votre webhook sans le supprimer en supprimant la coche.
  9. 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.

  1. 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.

  2. 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-app
    

    Par 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.

  1. Supprimer votre application

    ibmcloud ce app delete --name my-github-app
    

    Lorsque vous supprimez votre application, les fichiers de génération associés sont également supprimés.

  2. Supprimez le webhook en ouvrant vos paramètresGitHub-> Webhooks et en cliquant sur Supprimer après le nom du webhook.

  3. Supprimer les images que la construction a créées à partir de IBM Cloud Container Registry

    1. Accédez à Registry dans la console IBM Cloud.
    2. Recherchez l'archive et l'image associées à votre application en recherchant votre nom d'application.
    3. Sélectionnez l'archive et l'image et supprimez.