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

O evento Gollum do GitHub permite-lhe escutar as atualizações do wiki. Quando isto acontece e a nossa função das Funções do Azure é acionada, pode analisar o payload para obter e processar os dados enviados.

Ao configurar um webhook no GitHub, mostrou ao departamento de TI que consegue escutar os eventos Gollum no repositório do GitHub da sua empresa. Também mostrou como as Funções do Azure lhe permitem executar o código quando a função recebe um pedido de webhook. Nesta unidade, iremos examinar o payload do evento Gollum para que possamos atualizar a nossa função e analisá-la corretamente.

Payload do evento Gollum

O payload do evento Gollum inclui os seguintes itens:

pages`** As páginas que foram atualizadas. Cada página inclui as seguintes informações:

  • page_name O nome da página.
  • title O título da página atual.
  • action A ação que foi realizada na página. Pode ser criada ou editada.
  • html_url O HTML da página do wiki. repository Informações sobre o repositório que contém a página do wiki, incluindo:
  • name O nome do repositório.
  • owner Detalhes sobre o proprietário do repositório.
  • html_url O endereço do repositório. sender Informações sobre o utilizador que gerou o evento que acionou o webhook.

Por exemplo, um payload poderá ter o seguinte aspeto:

"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. Precisamos de atualizar a nossa lógica da função para que possamos analisar e processar estas informações corretamente.

Analisar informações a partir do evento Gollum

Lembre-se de que o webhook é executado quando ocorre um evento específico. Em seguida, o webhook envia um pedido para o URL no qual o código das Funções do Azure está configurado para escutar através do URL para a sua função. O payload é transmitido para a Função do Azure. A sua função pode analisar o corpo do pedido para extrair os campos a partir do payload e tomar medidas adequadas.

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. Eis os dados de saída na resposta da 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, iremos atualizar o nosso código de função para que possamos lidar corretamente com o evento Gollum recebido.