Desencadenamiento de función de Azure Functions con un evento de GitHub
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 editadahtml_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.