| Resumen | Discourse GitHub Permite al personal asignar insignias a los usuarios en función de sus contribuciones en GitHub. También permite a los usuarios crear Linkbacks de GitHub, Enlaces permanentes y mostrar el estado en vivo de las PR en los oneboxes. | |
| Guía de instalación | Este plugin está integrado en el núcleo de Discourse. No es necesario instalar el plugin por separado. |
Funcionalidades
Insignias de GitHub
Asigna insignias a tus usuarios en función de sus contribuciones en GitHub.
Cómo usarlo:
- Habilita
github badges enableden Configuración → Plugins. - Genera un token de acceso de GitHub y pégalo en la configuración
github linkback access token. Consulta las instrucciones a continuación. - Añade una o más URL de los repositorios de GitHub que se escanearán en busca de contribuciones a la configuración del sitio
github badges repos.
Cómo funciona el conteo de insignias:
Las insignias cuentan los commits en todos los repositorios y, cuando un usuario contribuye a varios repos, todos sus commits se suman en un total único.
Insignias de Committer:
| Insignia | Commits requeridos |
|---|---|
| Bronce | 1 commit |
| Plata | 25 commits |
| Oro | 1000 commits |
Progresión de insignias: A medida que los usuarios acumulan más contribuciones en cualquiera de los repositorios rastreados, avanzan automáticamente por los niveles de insignias. Por ejemplo, si un usuario hace un commit en el Repo A y luego en el Repo B, ambas contribuciones cuentan hacia su total, permitiéndole progresar de Bronce a Plata a Oro.
Linkback de GitHub
Crea un enlace desde un pull request o commit de GitHub de vuelta a una publicación de Discourse donde se menciona.
Cómo usarlo:
- Habilita
github linkback enableden Configuración → Plugins. - Genera un token de acceso de GitHub y pégalo en la configuración
github linkback access token. Consulta las instrucciones a continuación. - Finalmente, añade los proyectos a los que deseas publicar en la configuración del sitio
github linkback projectsen los siguientes formatos:usuario/repositoriopara repositorios específicosusuario/*para todos los repositorios de un usuario determinado
Enlace permanente de GitHub
Reemplaza los enlaces no permanentes de GitHub con enlaces permanentes.
Cómo usarlo:
- Habilita
github permalinks enableden Configuración → Plugins.
Estado en vivo de PR
Muestra indicadores de estado en vivo en los oneboxes de pull requests de GitHub en publicaciones y mensajes de chat. El estado se actualiza automáticamente mediante webhooks cuando las PR cambian en GitHub.
Tipos de estado
| Estado | Color | Descripción |
|---|---|---|
| Borrador | Gris | La PR está marcada como borrador |
| Abierto | Gris | La PR está abierta y esperando revisión |
| Aprobado | Verde | La PR ha sido aprobada por los revisores |
| Cambios solicitados | Naranja | Los revisores han solicitado cambios |
| Fusionado | Púrpura | La PR ha sido fusionada |
| Cerrado | Rojo | La PR fue cerrada sin fusionar |
Cómo usarlo:
Paso 1: Habilitar la funcionalidad
Ve a Admin > Configuración > Plugins y establece github pr status enabled en true.
Paso 2: Configurar tokens de acceso de GitHub
Para obtener el estado de la PR (especialmente para repositorios privados), configura los tokens de acceso de GitHub.
Configuración: github onebox access tokens
Formato:
nombre_organización|ghp_tu_token_aquí
predeterminado|ghp_token_copia_de_seguridad_aquí
Puedes especificar tokens por organización, además de un token predeterminado que se usa como copia de seguridad. Cada línea debe contener nombre_org|token donde el token es un Token de Acceso Personal de GitHub (clásico) con el alcance repo.
Ejemplo:
discourse|ghp_xxxxxxxxxxxxxxxxxxxx
mi-empresa|ghp_yyyyyyyyyyyyyyyyyyyy
predeterminado|ghp_zzzzzzzzzzzzzzzzzzzzzz
Paso 3: Configurar webhooks de GitHub (para actualizaciones en tiempo real)
Para obtener actualizaciones automáticas de estado cuando cambian las PR, configura un webhook en GitHub.
Generar un secreto de webhook:
openssl rand -hex 32
Establece la configuración del sitio github webhook secret con tu secreto generado.
Crear el webhook en GitHub:
Puedes crear el webhook a nivel de organización (para cubrir todos los repos) o por repositorio.
Para una organización:
- Ve a la Configuración de tu organización
- Navega a Webhooks (bajo Código, planificación y automatización)
- Haz clic en Agregar webhook
Para un repositorio:
- Ve a la Configuración de tu repositorio
- Navega a Webhooks
- Haz clic en Agregar webhook
Configuración del webhook:
| Campo | Valor |
|---|---|
| URL de carga útil | https://tu-sitio-de-discourse.com/discourse-github/webhooks/github |
| Tipo de contenido | application/json |
| Secreto | Tu secreto de webhook generado |
| Verificación SSL | Habilitar (recomendado) |
| Eventos | Selecciona “Permíteme seleccionar eventos individuales” |
Selecciona estos eventos:
- Pull requests
- Revisiones de pull request
Haz clic en Agregar webhook para guardar.
Paso 4: Verificar la configuración
- Crea una publicación de prueba con una URL de PR de GitHub
- Verifica que el onebox se muestre con un icono de estado
- Cambia el estado de la PR en GitHub (por ejemplo, apruébala o ciérrala)
- Dentro de unos segundos, actualiza la página de Discourse; el estado debería actualizarse
Puedes verificar el estado de entrega del webhook en la configuración de webhooks de GitHub para confirmar que los eventos se están enviando y recibiendo correctamente.
Prioridad de estado
Cuando una PR tiene múltiples estados (por ejemplo, aprobada pero también con cambios solicitados), el estado se determina mediante esta prioridad:
- Fusionado (mayor prioridad)
- Cerrado
- Borrador
- Cambios solicitados
- Aprobado
- Abierto (predeterminado)
Lógica del estado de revisión
La funcionalidad obtiene información de revisión de la API de GitHub para determinar el estado de aprobación:
- Toma la última revisión de cada revisor
- Ignora los estados de revisión “comentado” y “pendiente”
- Muestra “cambios solicitados” si algún revisor ha solicitado cambios
- Muestra “aprobado” solo si existen revisiones y ninguna solicita cambios
Dónde funciona
- Publicaciones del foro — Cualquier publicación que contenga un onebox de PR de GitHub
- Mensajes de chat — Los oneboxes de PR en el chat también muestran el estado en vivo
Nota: Los oneboxes en línea (cuando un enlace aparece en línea en el texto en lugar de como una vista previa completa) no muestran iconos de estado.
Migración desde el componente de tema GitHub Status
Esta funcionalidad reemplaza el componente de tema GitHub Status Indicators. Los dos no son compatibles y no deben usarse juntos.
Si estás utilizando actualmente el componente de tema:
- Deshabilita y elimina el componente de tema
github-status-theme - Habilita esta funcionalidad integrada a través de la configuración
github pr status enabled
Configuración
Token de acceso de GitHub
Para que la funcionalidad de linkback funcione y se otorguen las insignias a tus usuarios, necesitas proporcionar un token de acceso de GitHub. Puedes generar tu token aquí: Sign in to GitHub · GitHub.
La funcionalidad de linkback requiere el alcance public_repo, y otorgar insignias no requiere ningún alcance (deja todo desmarcado si solo quieres insignias). Dado que el alcance public_repo otorga acceso de escritura a los repositorios, te recomendamos crear una cuenta de GitHub desechable que no tenga acceso a ningún repositorio y usarla solo para generar un token.
Alcances de token por funcionalidad
| Funcionalidad | Alcance requerido |
|---|---|
| Insignias | No se requiere ningún alcance |
| Linkback | public_repo |
| Estado de PR (repos públicos) | No se requiere ningún alcance |
| Estado de PR (repos privados) | repo |
Referencia de configuraciones del sitio
| Configuración | Predeterminado | Descripción |
|---|---|---|
enable discourse github plugin |
false |
Interruptor principal del plugin |
github badges enabled |
false |
Habilitar insignias de contribución de GitHub |
github badges repos |
(vacío) | URL de repositorios para rastrear insignias |
github linkback enabled |
false |
Habilitar linkbacks de GitHub a Discourse |
github linkback access token |
(vacío) | Token de acceso para la funcionalidad de linkback |
github linkback projects |
(vacío) | Proyectos para crear linkbacks |
github permalinks enabled |
false |
Reemplazar enlaces de GitHub con enlaces permanentes |
github pr status enabled |
false |
Habilitar iconos de estado de PR en oneboxes |
github webhook secret |
(vacío) | Secreto para verificación de firma de webhook |
github onebox access tokens |
(vacío) | Tokens de acceso para la API de GitHub (formato: org|token) |
Detalles técnicos
Uso de la API de estado de PR
Cuando se genera un onebox de PR de GitHub, Discourse realiza hasta dos llamadas a la API:
- Datos de PR:
GET /repos/{owner}/{repo}/pulls/{number}— Obtiene información básica de la PR, incluido el estado, el estado de fusión y el estado de borrador - Revisiones:
GET /repos/{owner}/{repo}/pulls/{number}/reviews— Obtiene datos de revisión para determinar el estado de aprobación
Estas llamadas utilizan tu token de acceso configurado si está disponible, permitiendo el acceso a repositorios privados.
Seguridad de webhooks
Las solicitudes de webhook se verifican mediante validación de firma HMAC-SHA256. GitHub firma la carga útil del webhook con tu secreto, y Discourse verifica esta firma antes de procesarla. Las firmas no válidas se rechazan con una respuesta 403.
Eventos de webhook que desencadenan actualizaciones
- Cambios en el estado de la PR (abierto, cerrado, reabierto)
- PR fusionada
- Cambios en el estado de borrador (convertido a borrador, listo para revisión)
- Revisiones de pull request enviadas
- Revisiones editadas o descartadas
Consideraciones de rendimiento
- El rebake se pone en cola como un trabajo en segundo plano de baja prioridad para evitar afectar el rendimiento del sitio
- Solo se rebakean las publicaciones/mensajes con oneboxes completos de PR de GitHub (se omiten los oneboxes en línea)
- Los rebakes de mensajes de chat omiten notificaciones para evitar alertas duplicadas
REGISTRO DE CAMBIOS
2025-12-10
- CORRECCIÓN: Omitir notificaciones al rebakear mensajes de chat desde webhooks de GitHub
2025-12-09
- CORRECCIÓN: Omitir rebakear publicaciones con oneboxes de PR de GitHub en línea
- CORRECCIÓN: Evitar estado intermedio al rebakear publicaciones con oneboxes
- CORRECCIÓN: Rebakear mensajes de chat cuando cambia el estado de PR de GitHub
- UX: Usar altura mínima para evitar cambios de diseño cuando cambia el icono de estado
- UX: Reducir el tamaño del icono de estado de PR de GitHub en móviles
2025-12-08
- FUNCIONALIDAD: Añadir estado “cambios solicitados” a los oneboxes de PR de GitHub
2025-12-04
- FUNCIONALIDAD: Icono de estado en vivo de PR de GitHub
2025-11-10
- FUNCIONALIDAD: Permitir y denegar listas para linkbacks
2025-11-08
- FUNCIONALIDAD: Añadir lista de exclusión de categorías para linkbacks de GitHub
2024-12-20
- DESARROLLO: Mover discourse-github al núcleo (ya no requiere instalación separada)
