Utlösa en Azure-funktion med en GitHub-händelse

Slutförd

Med Gollum-händelsen (GitHub) kan du lyssna efter Wiki-uppdateringar. När den här händelsen inträffar utlöses din Azure HttpTrigger-funktion och du kan parsa nyttolasten för att hämta och bearbeta de data som skickades.

Du har visat IT-avdelningen att du kan lyssna efter Gollum-händelser på företagets GitHub-lagringsplats genom att konfigurera en webhook. Du har också visat hur Azure Function-appar gör att du kan köra kod när en funktion tar emot en webhook-begäran.

I den här lektionen ska vi undersöka nyttolasten från Gollum-händelsen så att vi kan uppdatera vår funktion för att parsa den korrekt.

Nyttolast för Gollum-händelse

Nyttolasten för Gollum-händelsen innehåller följande objekt:

  • sidor som har uppdaterats. Varje sida innehåller följande information:
    • page_name Namnet på sidan.
    • title Aktuell sidrubrik.
    • action Åtgärd som utfördes på sidan – skapad eller redigerad.
    • html_url HTML-wiki-sida.
  • lagringsplatsinformation om lagringsplatsen som innehåller wiki-sidan, inklusive:
    • name Namnet på lagringsplatsen.
    • owner Information om ägaren av lagringsplatsen.
    • html_url Lagringsplatsens adress.
  • avsändarinformation om den användare som skapade händelsen som orsakade webhooken att utlösas.

En nyttolast kan till exempel se ut som följande kod.

"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": "..."
    ...
}

Den här informationen skickas som meddelandetext i en HTTP POST-begäran. Vi måste uppdatera vår funktionslogik för att parsa och bearbeta den här informationen korrekt.

Parsa information från Gollum-händelsen

Kom ihåg att webhooken körs när en viss händelse inträffar. Webhooken skickar sedan en begäran till url:en där Azure Functions-koden har konfigurerats för att lyssna med hjälp av URL:en för din funktion. Nyttolasten skickas till Azure-funktionen. Funktionen kan parsa begärandetexten för att extrahera fälten från nyttolasten och vidta lämpliga åtgärder.

I följande exempel hämtas namnet på lagringsplatsen från nyttolasten. Händelsetypen är tillgänglig i begärandehuvudet x-github-event. Dessa data matas ut i följande funktionssvar.

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

I nästa övning uppdaterar vi funktionskoden för att kunna hantera en inkommande Gollum-händelse .