- Node.js instalado
- Conta GitLab com acesso administrativo ao repositório
- Acesso ao Microsoft Teams
- Acesse seu repositório no GitLab
- Vá em Configurações > Webhooks no menu lateral
- Clique em "Add New Webhook"
- Preencha os detalhes do webhook:
- URL: Endpoint do seu aplicativo
- Token Secreto: Crie um token seguro (guarde para uso posterior)
- Selecione os eventos que deseja receber notificações
- Clique em "Save Changes"
- Abra o Microsoft Teams
- Clique em "Aplicativos" na barra lateral
- Pesquise por "Workflows"
- Selecione "Postar mensagem no chat ao receber webhook"
- Escolha o chat ou canal de destino
- Clique em "Avançar" e copie a URL do webhook fornecida
- Clone o repositório:
git clone https://github.com/michaelchierici/code-notification
cd notification- Instale as dependências:
npm install- Crie um arquivo
.envna raiz do projeto:
CODE_REVIEW_CHAT_WEBHOOK_URL=https://outlook.office.com/webhook/seu-webhook-do-teams
HOTFIX_CHAT_WEBHOOK_URL=https://outlook.office.com/webhook/seu-webhook-hotfix
DEPLOY_CHAT_WEBHOOK_URL=https://outlook.office.com/webhook/seu-webhook-deploy
GITLAB_SECRET_TOKEN=seu-token-secreto-gitlab- Inicie o servidor de desenvolvimento:
npm run devPara testar o endpoint do webhook:
-
Adicione o header:
- Chave:
x-gitlab-token - Valor: Seu token secreto do GitLab
- Chave:
-
Envie uma requisição POST para a rota
/gitlab-webhook.
CODE_REVIEW_CHAT_WEBHOOK_URL: URL do webhook do Microsoft TeamsHOTFIX_CHAT_WEBHOOK_URL: URL do webhook do Microsoft Teams para notificações de hotfixesDEPLOY_CHAT_WEBHOOK_URL: URL do webhook do Microsoft Teams para notificações de deploysGITLAB_SECRET_TOKEN: Token secreto configurado no webhook do GitLab
O webhook utiliza Adaptive Cards para formatar a mensagem no Teams. Exemplo do payload:
{
"type": "message",
"attachments": [
{
"contentType": "application/vnd.microsoft.card.adaptive",
"content": {
"type": "AdaptiveCard",
"version": "1.4",
"body": [
{
"type": "TextBlock",
"size": "Large",
"weight": "Bolder",
"text": "🚀 Novo pedido de *Code Review*"
},
{
"type": "TextBlock",
"weight": "bolder",
"text": "📝 Título da Issue (#123)"
},
{
"type": "TextBlock",
"color": "default",
"text": "👤 Nome do Usuário (@username)"
},
{
"type": "TextBlock",
"color": "accent",
"text": "[🔗 Abrir issue](https://gitlab.com/...)"
}
],
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json"
}
}
]
}- Documentação oficial do Webhook do Teams
- Designer de Adaptive Cards - Ferramenta para criar e personalizar cards
- Certifique-se que o token secreto do GitLab corresponde ao do arquivo .env
- Verifique se a URL do webhook do Teams está correta e acessível
- Verifique os logs da aplicação para mensagens de erro