Desencadenamiento de función de Azure Functions con un evento de GitHub

Completado

El evento Gollum de GitHub permite escuchar las actualizaciones del sitio wiki. Cuando este evento se produce, se activa la función HttpTrigger de Azure, y se puede analizar la carga para recuperar y procesar los datos que se han enviado.

Ha explicado al departamento de TI que pueden configurar un webhook para escuchar eventos Gollum en el repositorio de GitHub de la empresa. También ha demostrado cómo las aplicaciones de Azure Functions permiten ejecutar código cuando una función recibe una solicitud de webhook.

En esta unidad, examinaremos la carga desde el evento Gollum, de tal forma que podamos actualizar la función para analizarla correctamente.

Carga del evento Gollum

La carga del evento Gollum contiene los siguientes elementos:

  • Las páginasque se han actualizado. Cada página incluye la siguiente información:
    • page_name Nombre de la página.
    • title Título de página actual.
    • action Acción que se ha realizado en la página: creada o editada
    • html_url Página wiki de HTML.
  • repository Información sobre el repositorio que contiene la página wiki, incluido lo siguiente:
    • name Nombre del repositorio.
    • owner Detalles del propietario del repositorio.
    • html_url Dirección del repositorio.
  • sender Información sobre el usuario que ha generado el evento que ha provocado la activación del webhook.

Por ejemplo, una carga podría ser similar al código siguiente.

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

Esta información se pasa como el cuerpo de una solicitud HTTP POST. Tendremos que actualizar la lógica de la función para analizar y procesar esta información correctamente.

Análisis de la información del evento Gollum

Recuerde que el webhook se ejecuta cuando se produce un evento específico. Después, el webhook envía una solicitud a la dirección URL en la que el código de Azure Functions se ha configurado para escuchar, mediante la dirección URL de la función. La carga se pasa a la función de Azure. La función puede analizar el cuerpo de la solicitud para extraer los campos de la carga y tomar las medidas adecuadas.

El ejemplo siguiente recupera el nombre del repositorio de la carga. El tipo de evento está disponible en el encabezado de solicitud x-github-event. Estos datos se representan en la respuesta de la función siguiente.

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

En el siguiente ejercicio, actualizaremos el código de función para poder administrar correctamente un evento Gollum entrante.