Wyzwalanie funkcji platformy Azure przy pomocy zdarzenia usługi GitHub

Ukończone

Zdarzenie Gollum w usłudze GitHub umożliwia nasłuchiwanie aktualizacji witryny typu wiki. Po wystąpieniu tego zdarzenia funkcja Azure HttpTrigger jest wyzwalana i można przeanalizować ładunek w celu pobrania i przetworzenia wysłanych danych.

Pokazałeś działowi IT, że możesz nasłuchiwać zdarzeń Gollum w repozytorium GitHub swojej firmy, konfigurując webhook. Ty także pokazałeś, jak aplikacje funkcji Azure umożliwiają uruchamianie kodu, gdy funkcja otrzymuje żądanie webhook.

W tej lekcji zbadamy ładunek zdarzenia Gollum, aby móc zaktualizować naszą funkcję do jego poprawnej analizy.

Ładunek zdarzenia Gollum

Ładunek zdarzenia Gollum zawiera następujące elementy:

  • strony , które zostały zaktualizowane. Każda strona zawiera następujące informacje:
    • page_name: nazwa strony.
    • title: bieżący tytuł strony.
    • action: Akcja wykonana na stronie (utworzona lub edytowana).
    • html_url: strona typu wiki HTML.
  • informacje o repozytorium zawierającym stronę typu wiki, w tym:
    • name: nazwa repozytorium.
    • owner: szczegóły właściciela repozytorium.
    • html_url: adres repozytorium.
  • informacje o nadawcy o użytkowniku, który zgłosił zdarzenie, które spowodowało wyzwolenie elementu webhook.

Na przykład ładunek może wyglądać podobnie do poniższego kodu.

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

Te informacje są przekazywane jako treść żądania HTTP POST. Musimy zaktualizować logikę funkcji, aby przeanalizować i przetworzyć te informacje poprawnie.

Analizowanie informacji ze zdarzenia Gollum

Pamiętaj, że element webhook zostaje uruchomiony po wystąpieniu określonego zdarzenia. Webhook następnie wysyła żądanie do adresu URL, pod którym skonfigurowano kod twojej funkcji Azure, aby nasłuchiwać za pomocą adresu URL funkcji. Ładunek jest przekazywany do funkcji platformy Azure. Funkcja może przeanalizować treść żądania, aby wyodrębnić pola z ładunku i wykonać odpowiednie akcje.

Poniższy przykład pobiera nazwę repozytorium z ładunku. Typ zdarzenia jest dostępny w nagłówku żądania x-github-event. Te dane są danymi wyjściowymi w następującej odpowiedzi funkcji.

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

W następnym ćwiczeniu zaktualizujemy kod funkcji, aby umożliwić obsługę przychodzącego zdarzenia Gollum .