Acerca de webhooks
Los webhooks permiten suscribirse a eventos que se producen en un sistema de software y recibir automáticamente una entrega de datos al servidor cada vez que se produzcan esos eventos.
Los webhooks suelen recibir datos tal como sucede, en lugar de sondear una API (llamar a una API de forma intermitente) para ver si los datos están disponibles. Con los webhooks, solo tiene que expresar interés en un evento una vez, al crear el webhook.
Los webhooks se usan en una amplia gama de escenarios, entre los que se incluyen:
- Desencadenar canalizaciones de CI (integración continua) en un servidor de CI externo. Por ejemplo, para desencadenar CI en Jenkins o CircleCI cuando el código se inserta en una rama.
- Enviar notificaciones sobre eventos en GitHub a las plataformas de colaboración. Por ejemplo, enviar una notificación a Discord o Slack cuando hay una revisión en una solicitud de incorporación de cambios.
- Actualizar un rastreador de problemas externos como Jira.
- Realizar una implementación en un servidor de producción.
- Registrar eventos a medida que se producen en GitHub, con fines de auditoría.
Acerca de los webhooks en GitHub
Al crear un webhook, especifica una dirección URL y se suscribe a eventos que se producen en GitHub. Cuando se produce un evento al que se suscribe el webhook, GitHub enviará una solicitud HTTP con datos sobre el evento a la dirección URL especificada. Si el servidor está configurado para escuchar las entregas de webhook en esa dirección URL, puede tomar medidas cuando reciba una.
Por ejemplo, puede suscribir el webhook a eventos que se producen cuando se inserta código en un repositorio, se abre una solicitud de incorporación de cambios, se compila un sitio GitHub Pages o se agrega un nuevo miembro a un equipo. El servidor podría responder al implementar código en producción, lo que desencadenaría una canalización de CI al enviar una notificación o crear un proyecto GitHub para el nuevo miembro del equipo.
Debes crear un webhook dentro de un repositorio, organización o cuentas GitHub Enterprise, o GitHub App. El webhook solo puede acceder a recursos disponibles en el repositorio, organización o cuentas GitHub Enterprise, o GitHub App donde está instalado. Para obtener más información, vea «Tipos de webhooks».
Para obtener más información sobre la creación de webhooks, consulta "Crear webhooks". Para obtener más información sobre los tipos de eventos a los que puede suscribirse, consulte "Eventos y cargas de webhook". Para obtener más información sobre cómo configurar el servidor para realizar una acción en respuesta a una entrega de carga útil, consulte "Identificar las entregas de los webhooks".
Nota: Los webhooks de GitHub actualmente no son compatibles con IPv6, pero lo serán en el futuro. El punto de conexión de la API REST /meta
devuelve intervalos IPv6 para habilitar esa transición.
Elección de webhooks o la API de REST
Usar webhooks tiene las siguientes ventajas sobre el uso de las API:
- Los webhooks requieren menos esfuerzo y menos recursos que el sondeo de una API.
- Los webhooks escalan mejor que las llamadas a la API. Si necesitas supervisar muchos recursos, llamar a la API para cada recurso puede hacer que alcances rápidamente la cuota del límite de velocidad de API. En su lugar, puedes suscribirte a varios eventos de webhook y recibir información solo cuando se produce un evento.
- Los webhooks permiten actualizaciones casi en tiempo real, ya que los webhooks se desencadenan cuando se produce un evento.
Si solo necesita información una vez o de manera intermitente, o solo quiere obtener información de un pequeño conjunto de recursos sin planes para escalar verticalmente, puede llamar a la API cuando necesite la información pertinente.
Para obtener información sobre los procedimientos recomendados que se deben seguir al usar webhooks, consulta "Procedimientos recomendados para usar webhooks".
Nota: GitHub Services (a veces denominado Service Hooks) es sunset, en favor de la integración con webhooks. Para obtener más información sobre la migración de la integración desde el uso de Servicios de GitHub al uso de webhooks, consulte laentrada de blog.