Auslösen einer Azure-Funktion mit einem GitHub-Ereignis

Abgeschlossen

Das Gollum-Ereignis von GitHub ermöglicht Ihnen das Lauschen auf Wiki-Updates. Wenn dieses Ereignis auftritt, wird Ihre Azure HttpTrigger-Funktion ausgelöst, und Sie können die Nutzdaten analysieren, um die gesendeten Daten abzurufen und zu verarbeiten.

Sie haben der IT-Abteilung gezeigt, dass Sie auf Gollum-Ereignisse im firmeneigenen GitHub-Repository lauschen können, indem Sie einen Webhook auf GitHub einrichten. Sie haben auch demonstriert, wie Azure Funktions-Apps Ihnen ermöglichen, Code auszuführen, wenn die Funktion eine Webhookanforderung empfängt.

In dieser Lerneinheit untersuchen wir die Nutzdaten aus dem Gollum-Ereignis, damit wir unsere Funktion aktualisieren können, um sie ordnungsgemäß zu analysieren.

Gollum-Ereignisnutzlast

Die Nutzlast für das Gollum-Ereignis enthält die folgenden Elemente:

  • Seiten, die aktualisiert wurden. Jede Seite enthält die folgenden Informationen:
    • page_name Name der Seite.
    • title Aktueller Seitentitel.
    • action-Aktion, die auf der Seite ausgeführt wurde – erstellt oder bearbeitet.
    • html_url HTML-Wikiseite.
  • Repository Informationen zum Repository mit der Wikiseite, inklusive:
    • name Name des Repositorys.
    • owner Details zum Besitzer des Repositorys.
    • html_url Adresse des Repositorys.
  • Sender Informationen über den Benutzer, welcher das Ereignis ausgelöst hat, das den Webhook ausgelöst hat.

Nutzdaten können beispielsweise wie folgt aussehen.

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

Diese Informationen werden als Text der HTTP POST-Anforderung übergeben. Wir müssen unsere Funktionslogik aktualisieren, um diese Informationen ordnungsgemäß analysieren und verarbeiten zu können.

Analysieren von Informationen aus dem Gollum-Ereignis

Beachten Sie, dass der Webhook ausgeführt wird, wenn ein bestimmtes Ereignis auftritt. Der Webhook sendet dann mithilfe der URL für Ihre Funktion eine Anforderung an die URL, auf der Ihr Azure Functions-Code für das Lauschen eingerichtet ist. Die Nutzlast wird an die Azure-Funktion übergeben. Ihre Funktion kann den Anforderungstext analysieren, um die Felder aus der Nutzlast zu extrahieren und die entsprechenden Maßnahmen zu ergreifen.

Im folgende Beispiel wird der Name des Repositorys aus der Nutzlast abgerufen. Der Ereignistyp ist im x-github-event-Anforderungsheader verfügbar. Diese Daten werden in der Funktionsantwort ausgegeben.

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

In der nächsten Übung aktualisieren wir Ihren Funktionscode, damit er ein eingehendes Gollum-Ereignis verarbeiten kann.