As URLs de webhook devem alcançar o serviço de Webhooks (porta 3332). Usar o domínio da API só funciona se seu proxy reverso rotear os caminhos
/.../webhook para o serviço de Webhooks.A URL de webhook do Azure Repos requer um token assinado
Ao contrário do GitHub, GitLab, Bitbucket e Forgejo, as requisições de webhook do Azure Repos devem incluir um parâmetro de consultatoken criptografado. O Kodus valida esse token em cada requisição recebida e rejeita chamadas sem ele com 403 Unauthorized. O token é derivado de duas variáveis de ambiente que você já configurou durante a instalação self-hosted:
CODE_MANAGEMENT_SECRET— a chave de criptografia de 32 bytes (codificada em hex).CODE_MANAGEMENT_WEBHOOK_TOKEN— o texto simples que a chave criptografa.
<generated> é produzido criptografando CODE_MANAGEMENT_WEBHOOK_TOKEN com CODE_MANAGEMENT_SECRET usando AES-256-CBC, formatado como <ivHex>:<cipherHex>.
O Kody gera esse token automaticamente quando cria o webhook para você por meio do fluxo de integração via UI. Você só precisa gerá-lo manualmente quando estiver registrando o webhook manualmente no Azure DevOps.
Gerando o token do webhook
Escolha a opção que corresponde ao seu ambiente. Ambas usam as variáveis de ambiente que seu stack Kodus já tem configurado — você não precisa clonar o repositório.Opção A — dentro do contêiner Kodus em execução (recomendado)
Execute isto contra um contêinerapi já em execução. As variáveis de ambiente já estão no escopo:
?token=... na URL do webhook. Exemplo:
Opção B — localmente com Node (sem Docker)
Se seu stack Kodus não estiver em execução ou quiser gerar o token em uma máquina diferente, exporte as duas variáveis de ambiente e execute:Criando a assinatura de webhook no Azure DevOps
- Navegue até seu projeto no Azure DevOps.
- Clique em Project settings no canto inferior esquerdo.
- Em General, selecione Service hooks.
- Clique em + Create subscription.
-
Configure o webhook:
- Service: Web Hooks
- Trigger on this type of event: selecione um dos eventos suportados (veja abaixo)
-
URL: sua URL de webhook do Azure Repos do Kodus com o token anexado:
- Filters (opcional): filtre por repositório ou branch se necessário.
- Action: enviar uma requisição POST para a URL fornecida.
- Clique em Finish.
git.pullrequest.created— Pull request criadogit.pullrequest.updated— Pull request atualizadogit.pullrequest.merge.attempted— Tentativa de merge de pull requestms.vss-code.git-pullrequest-comment-event— Comentário em pull request
Certifique-se de que a URL é acessível a partir do Azure DevOps e aceita requisições POST de entrada na porta 3332 (diretamente ou por meio do seu proxy reverso).
Solução de Problemas
Azure envia o webhook mas o Kodus retorna 403
Azure envia o webhook mas o Kodus retorna 403
O valor
?token= está ausente, truncado, ou foi gerado com um CODE_MANAGEMENT_SECRET / CODE_MANAGEMENT_WEBHOOK_TOKEN diferente do que a API em execução usa. Regenere o token com a Opção A (que garante que ele é produzido com as mesmas variáveis de ambiente que o contêiner está usando de fato) e atualize a URL da assinatura no Azure.Webhook nunca chega
Webhook nunca chega
O Azure DevOps só tenta reenviar entregas com falha um número limitado de vezes. Verifique a página Service hooks — entregas bem-sucedidas mostram um check verde. Se as entregas estiverem falhando com erros de conexão, verifique se a URL é acessível pela internet pública e se seu proxy reverso encaminha os caminhos
/.../webhook para a porta 3332.Funciona para um evento mas não para outros
Funciona para um evento mas não para outros
Cada tipo de evento precisa de sua própria assinatura no Azure DevOps. Se você criou apenas “Pull request created”, atualizações e comentários não irão disparar revisões.