Déclencher une fonction Azure avec un événement GitHub

Effectué

L’événement Gollum GitHub vous permet d’écouter les mises à jour du wiki. Lorsque cet événement se produit, votre fonction Azure HttpTrigger est déclenchée et vous pouvez analyser la charge utile pour récupérer et traiter les données qui ont été envoyées.

Vous avez montré à votre service informatique que vous pouvez écouter les événements Gollum du dépôt GitHub de la société en configurant un webhook. Vous avez également démontré comment les applications de fonction Azure vous permettent d’exécuter du code quand une fonction reçoit une demande de webhook.

Dans cette unité, nous allons examiner la charge utile de l’événement Gollum afin de pouvoir mettre à jour notre fonction pour l’analyser correctement.

Charge utile des événements Gollum

La charge utile de l’événement Gollum contient les éléments suivants :

  • pages qui ont été mises à jour. Chaque page comporte les informations suivantes :
    • page_name Nom de la page.
    • title Titre de la page active.
    • action Action qui a été effectuée sur la page – création ou modification.
    • html_url Page Wiki au format HTML.
  • repository Informations sur le dépôt contenant la page Wiki, notamment :
    • name Nom du dépôt.
    • owner Informations concernant le propriétaire du dépôt.
    • html_url Adresse du dépôt.
  • sender Informations sur l’utilisateur à l’origine de l’événement qui a entraîné le déclenchement du webhook.

Par exemple, une charge utile peut ressembler au code suivant.

"pages": [
    {
        "page_name": "Home",
        "title": "Home",
        "summary": null,
        "action": "edited",
        "sha": "562362bc141b9e2db1fb971e1ecb4fd0b7457f68",
        "html_url": "https://github.com/testrepo/Hello-World/wiki/Home"
    }
],
"repository": {
    ...
    "name": "testrepo",
    ...
    "owner": {
        ...
    },
    "html_url": "https://github.com/...",
    ...
},
"sender": {
    "login": "..."
    ...
}

Ces informations sont passées en tant que corps d’une requête HTTP POST. Nous allons devoir mettre à jour notre logique de fonction pour analyser et traiter correctement ces informations.

Analyser les informations de l’événement Gollum

N’oubliez pas que le webhook est exécuté lorsqu’un événement spécifique se produit. Le webhook envoie ensuite une requête à l’URL sur laquelle votre code Azure Functions est configuré pour écouter, en utilisant l’URL de votre fonction. La charge utile est passée à la fonction Azure. Votre fonction peut analyser le corps de la requête pour extraire les champs de la charge utile et prendre les mesures nécessaires.

L’exemple suivant récupère le nom du dépôt à partir de la charge utile. Le type d’événement est disponible dans l’en-tête de requête x-github-event. Ces données sont générées dans la réponse de la fonction suivante.

if (req.body.repository.name){
    context.res = {
        body: "Repository is: " + req.body.repository.name + ", Event Type is: " + req.headers['x-github-event']
    };
}

Dans l’exercice suivant, nous allons mettre à jour votre code de fonction pour pouvoir traiter un événement Gollum entrant.