Acionar uma Função do Azure com um evento do GitHub

Concluído

O evento Gollum do GitHub permite-lhe escutar as atualizações do wiki. Quando esse evento ocorre, sua função HttpTrigger do Azure é acionada e você pode analisar a carga para recuperar e processar os dados que foram enviados.

Você mostrou ao seu departamento de TI que pode ouvir os eventos do Gollum no repositório GitHub da sua empresa configurando um webhook. Você também demonstrou como os aplicativos do Azure Function permitem que você execute código quando uma função recebe uma solicitação de webhook.

Nesta unidade, examinaremos a carga útil do evento Gollum para que possamos atualizar nossa função para analisá-la corretamente.

Payload do evento Gollum

O payload do evento Gollum inclui os seguintes itens:

  • páginas que foram atualizadas. Cada página inclui as seguintes informações:
    • page_name Nome da página.
    • title Título da página atual.
    • action Ação que foi executada na página - criada ou editada.
    • html_url Página wiki HTML.
  • informações do repositório sobre o repositório que contém a página wiki, incluindo:
    • name Nome do repositório.
    • owner Detalhes sobre o proprietário do repositório.
    • html_url Endereço do repositório.
  • informações do remetente sobre o usuário que gerou o evento que causou o disparo do webhook.

Por exemplo, uma carga útil pode se parecer com o código a seguir.

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

Estas informações são transmitidas como o corpo de um pedido HTTP POST. Precisaremos atualizar nossa lógica de função para analisar e processar essas informações corretamente.

Analisar informações do evento Gollum

Lembre-se de que o webhook é executado quando ocorre um evento específico. Em seguida, o webhook envia uma solicitação para a URL onde seu código do Azure Functions está configurado para ouvir, usando a URL para sua função. O payload é transmitido para a Função do Azure. Sua função pode analisar o corpo da solicitação para extrair os campos da carga útil e tomar as ações apropriadas.

O exemplo seguinte obtém o nome do repositório a partir do payload. O tipo de evento está disponível no cabeçalho do pedido x-github-event. Esses dados são gerados na seguinte resposta de função.

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

No próximo exercício, atualizaremos seu código de função para poder lidar com um evento Gollum de entrada.