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

Concluído

O evento do Gollum do GitHub permite que você escute atualizações wiki. Quando esse evento ocorre e a sua função HttpTrigger do Azure é disparada, você pode analisar o conteúdo para recuperar e processar os dados enviados.

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

Nesta unidade, examinaremos o conteúdo do evento Gollum, permitindo que atualizemos nossa função a fim de analisá-lo corretamente.

Conteúdo do evento do Gollum

O conteúdo para o evento do Gollum contém os seguintes itens:

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

Por exemplo, um conteúdo pode ser semelhante ao 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 passadas como o corpo de uma solicitação HTTP POST. Precisaremos atualizar nossa lógica de função para analisar e processar essas informações corretamente.

Analisar informações do evento do Gollum

Lembre-se de que o webhook é executado quando ocorre um evento específico. O webhook envia uma solicitação para a URL em que seu código do Azure Functions está definido como ouvinte, usando a URL para sua função. O conteúdo é passado para a Função do Azure. Sua função pode analisar o corpo da solicitação para extrair os campos do conteúdo e tomar as medidas apropriadas.

O exemplo a seguir recupera o nome do repositório do conteúdo. O tipo de evento está disponível no cabeçalho da solicitação x-github-event. Esses dados são apresentados na resposta da função a seguir.

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

Em seguida, atualizaremos seu código de função para que seja capaz de tratar um evento de entrada Gollum.