Attivare una funzione di Azure con un evento GitHub

Completato

L'evento Gollum di GitHub consente di essere in ascolto per gli aggiornamenti del wiki. Quando si verifica questo evento, viene attivata la funzione di Azure HttpTrigger ed è possibile analizzare il payload per recuperare ed elaborare i dati inviati.

Si è dimostrato al reparto IT che è possibile essere in ascolto degli eventi Gollum nel repository GitHub aziendale, configurando un webhook. Si è inoltre dimostrato come le app di Funzioni di Azure consentano di eseguire il codice quando una funzione riceve una richiesta di webhook.

In questa unità si esaminerà il payload dell'evento Gollum per poter aggiornare la funzione in modo da analizzarla correttamente.

Payload dell'evento Gollum

Il payload per l'evento Gollum contiene gli elementi seguenti:

  • pages Le pagine che sono state aggiornate. Ogni pagina include le informazioni seguenti:
    • page_name Nome della pagina.
    • title Titolo pagina corrente.
    • action Azione eseguita nella pagina , creata o modificata.
    • html_url Pagina Wiki HTML.
  • informazioni sul repository contenente la pagina wiki, tra cui:
    • name Nome del repository.
    • owner Dettagli del proprietario del repository.
    • html_url Indirizzo del repository.
  • sender Informazioni sull'utente che ha generato l'evento che ha causato l'attivazione del webhook.

Ad esempio, un payload potrebbe avere un aspetto simile al codice seguente.

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

Queste informazioni vengono passate come corpo di una richiesta HTTP POST. È necessario aggiornare la logica della funzione per analizzare ed elaborare correttamente queste informazioni.

Analizzare le informazioni dell'evento Gollum

Tenere presente che il webhook viene eseguito quando si verifica un evento specifico. Il webhook invia quindi una richiesta all'URL in cui è configurato il codice Funzioni di Azure per l'ascolto, usando l'URL per la funzione. Il payload viene passato alla funzione di Azure. La funzione può analizzare il corpo della richiesta per estrarre i campi dal payload e intraprendere le azioni appropriate.

L'esempio seguente recupera il nome del repository dal payload. Il tipo di evento è disponibile nell'intestazione della richiesta x-github-event. Questi dati vengono restituiti nella risposta della funzione seguente.

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

Nell'esercizio successivo il codice della funzione verrà aggiornato per poter gestire un evento Gollum in ingresso.