Ejercicio: Configuración de un webhook para un repositorio de GitHub

Completado

En este ejercicio, configurará un webhook para un repositorio de GitHub. Aprenderá a escuchar eventos específicos (en este caso, el evento Gollum) y cómo realizar la devolución de llamada del webhook a la función cuando se desencadene el evento.

Configuración

  1. Mediante el explorador web, inicie sesión en la cuenta de GitHub.

  2. Para crear un repositorio, seleccione Nuevo en el panel de menú izquierdo. Aparece la página Crear un nuevo repositorio.

  3. En el cuadro Nombre del repositorio, escriba un nombre descriptivo, como LearnWebhookTest.

  4. Seleccione Public (Público) para activar el módulo wiki y búsquelo en el menú.

  5. Seleccione Create repository (Crear repositorio). Aparece la página Quick setup (Configuración rápida).

  6. Seleccione el vínculo para crear un archivo.

  7. En la barra de menús superior, seleccione Wiki para mostrar las páginas del repositorio (o repo). Aparece una página de bienvenida.

  8. Seleccione Crear la primera página. Aparece la plantilla Create new page (Crear una página).

  9. Agregue texto y, después, seleccione Save Page (Guardar página). La primera página de una wiki es la página principal.

Adición de un webhook al evento Gollum

Gollum es el nombre de un evento de GitHub que se desencadena cada vez que se crea o actualiza una página en la wiki de un repositorio.

  1. En la página principal de la vista Wiki hay una barra lateral denominada Pages (Páginas), que muestra las páginas del repositorio. Seleccione Home (Inicio) para mostrar la página principal.

  2. En la barra de menús superior de la página Inicio, seleccione Configuración. Aparecerá el panel Configuración.

  3. En la barra lateral Configuración, seleccione Webhooks. Aparece el panel Webhooks.

  4. En la parte superior derecha, seleccione Agregar webhook. Puede que GitHub le pida que confirme su contraseña para GitHub.

  5. En el panel Webhooks/ Agregar webhook, escriba los valores siguientes para cada opción.

    Configuración Value
    Dirección URL de carga Dirección URL de la aplicación de funciones de Azure del ejercicio anterior. Para obtener ayuda, vea la nota siguiente.
    Tipo de contenido Seleccione application/json en la lista desplegable.
    Which events would you like to trigger this webhook? (¿Qué eventos desea que desencadenen este webhook?) Seleccione Let me select individual events (Permitirme seleccionar eventos individuales). En la lista de eventos que aparece, desplácese hacia abajo y seleccione la casilla Wiki. Asegúrese de que no haya más casillas activadas.
    Activo Seleccionada.

    Sugerencia

    Copie la dirección URL de la función desde el panel HttpTrigger de Azure. Para ello, seleccione Obtener la dirección URL de la función en la barra de comandos. La dirección URL será parecida a esta: https://<your-functionapp-name>.azurewebsites.net/api/HttpTrigger1?code=aUjXIpqdJ0ZHPQuB0SzFegxGJu0nAXmsQBnmkCpJ6RYxleRaoxJ8cQ==

  6. Seleccione Agregar Webhook. Aparece el panel Webhooks.

  7. Compruebe que aparece el nuevo webhook. Debe tener (gollum) al final del nombre.

Prueba del webhook

  1. En la barra de menús superior de GitHub, seleccione Wiki. Aparece la página Inicio que ha creado antes.

  2. Seleccione Editar. Aparece el panel Editar Inicio.

  3. En el área de texto del panel, escriba el texto siguiente:

    Testing Webhook
    
  4. Seleccione Save Page (Guardar página). Vuelve a aparecer la página Inicio.

  5. En la barra de menús superior, seleccione Configuración. Aparecerá el panel Configuración.

  6. En la barra lateral, seleccione Webhooks. Aparece el panel Webhooks.

  7. Seleccione Editar. Se abre el panel Webhooks/Manage webhook (Webhooks/Administrar webhook).

  8. Seleccione la pestaña Entregas recientes (es posible que tenga que desplazarse hasta la parte inferior de la página).

  9. En la lista, para seleccionar la primera entrada de entrega (la más reciente), seleccione el botón de puntos suspensivos (...).

    Verá la sección Encabezados, incluido el Evento:

    Request URL: https://testwh123456.azurewebsites.net/api/HttpTrigger1?code=aUjXIpqdJ0ZHPQuB0SzFegxGJu0nAXmsQBnmkCpJ6RYxleRaoxJ8cQ%3D%3D
    Request method: POST
    Accept: */*
    content-type: application/json
    User-Agent: GitHub-Hookshot/16496cb
    X-GitHub-Delivery: 9ed46280-6ab3-11e9-8a19-f1a14922a239
    X-GitHub-Event: gollum
    X-GitHub-Hook-ID: 312141005
    X-GitHub-Hook-Installation-Target-ID: 394459163
    X-GitHub-Hook-Installation-Target-Type: repository
    

    También verá que la sección Carga contiene información que indica que se ha editado la página de wiki. La carga contiene secciones relativas a las páginas, el repositorio y el remitente, que deben ser similares a las del ejemplo siguiente:

        "pages": [
            {
                "page_name": "Home",
                "title": "Home",
                "summary": null,
                "action": "edited",
                "sha": "04d012c5f92a95ae3f7721173bf9f2b1b35ea22f",
                "html_url": "https://github.com/.../wiki/Home"
            }
        ],
        "repository" : {
            "id": 176302421,
            "node_id": "MDEwOlJlcG9zaXRvcnkxNzYzMDI0MjE=",
            "name": "tieredstorage",
            ...
        },
        "sender" : {
            ...
        }
    
  10. En la pestaña Recent Deliveries (Entregas recientes), seleccione la pestaña Respuesta.

    Verá el mensaje de respuesta generado por la función de Azure. En este ejemplo, el cuerpo debe contener el mensaje. Esta función desencadenada por HTTP se ejecutó correctamente. Pase un nombre en la cadena de consulta o en el cuerpo de la solicitud para obtener una respuesta personalizada.