Las URLs de webhook deben llegar al servicio de Webhooks (puerto 3332). Usar el dominio de la API solo funciona si tu proxy inverso enruta las rutas
/.../webhook al servicio de Webhooks.La URL de webhook de Azure Repos requiere un token firmado
A diferencia de GitHub, GitLab, Bitbucket y Forgejo, las solicitudes de webhook de Azure Repos deben incluir un parámetro de consultatoken cifrado. Kodus valida este token en cada solicitud entrante y rechaza las llamadas sin él con 403 Unauthorized. El token se deriva de dos variables de entorno que ya configuraste durante la instalación auto-hospedada:
CODE_MANAGEMENT_SECRET— la clave de cifrado de 32 bytes (codificada en hexadecimal).CODE_MANAGEMENT_WEBHOOK_TOKEN— el texto plano que la clave cifra.
<generated> se produce cifrando CODE_MANAGEMENT_WEBHOOK_TOKEN con CODE_MANAGEMENT_SECRET usando AES-256-CBC, con el formato <ivHex>:<cipherHex>.
Kody genera este token automáticamente cuando crea el webhook a través del flujo de integración de la interfaz de usuario. Solo necesitas generarlo manualmente cuando registras el webhook en Azure DevOps de forma manual.
Generar el token de webhook
Elige la opción que se adapte a tu entorno. Ambas usan las variables de entorno que tu stack de Kodus ya tiene configuradas — no necesitas clonar el repositorio.Opción A — dentro del contenedor Kodus en ejecución (recomendado)
Ejecuta esto contra un contenedorapi ya en ejecución. Las variables de entorno ya están disponibles:
?token=... en la URL del webhook. Ejemplo:
Opción B — localmente con Node (sin Docker)
Si tu stack de Kodus no está en ejecución o deseas generar el token en una máquina diferente, exporta las dos variables de entorno y ejecuta:Crear la suscripción de webhook en Azure DevOps
- Navega a tu proyecto de Azure DevOps.
- Haz clic en Project settings en la esquina inferior izquierda.
- En General, selecciona Service hooks.
- Haz clic en + Create subscription.
-
Configura el webhook:
- Service: Web Hooks
- Trigger on this type of event: selecciona uno de los eventos compatibles (ver a continuación)
-
URL: tu URL de webhook de Azure Repos de Kodus con el token agregado:
- Filters (opcional): filtra por repositorio o rama si es necesario.
- Action: enviar una solicitud POST a la URL indicada.
- Haz clic en Finish.
git.pullrequest.created— Pull request creadogit.pullrequest.updated— Pull request actualizadogit.pullrequest.merge.attempted— Intento de fusión de pull requestms.vss-code.git-pullrequest-comment-event— Comentario en pull request
Asegúrate de que la URL sea accesible desde Azure DevOps y acepte solicitudes POST entrantes en el puerto 3332 (directamente o a través de tu proxy inverso).
Solución de problemas
Azure envía el webhook pero Kodus devuelve 403
Azure envía el webhook pero Kodus devuelve 403
El valor de
?token= está ausente, truncado o fue generado con un CODE_MANAGEMENT_SECRET / CODE_MANAGEMENT_WEBHOOK_TOKEN diferente al que usa la API en ejecución. Regenera el token con la Opción A (que garantiza que se produce con las mismas variables de entorno que el contenedor está usando) y actualiza la URL de suscripción en Azure.El webhook nunca llega
El webhook nunca llega
Azure DevOps solo reintenta las entregas fallidas un número limitado de veces. Revisa la página de Service hooks — las entregas exitosas muestran una marca de verificación verde. Si las entregas fallan con errores de conexión, verifica que la URL sea accesible desde internet público y que tu proxy inverso reenvíe las rutas
/.../webhook al puerto 3332.Funciona para un evento pero no para otros
Funciona para un evento pero no para otros
Cada tipo de evento necesita su propia suscripción en Azure DevOps. Si solo creaste “Pull request created”, las actualizaciones y los comentarios no desencadenarán revisiones.