Este projeto tem interesse em servir como webhook utilizado para enviar mensagens a canais mattermost, quando um merge request Gitlab for aberto.
Vamos utilizar como exemplo, um projeto onde temos 2 repositórios backend e 2 repositórios frontend, e desejamos receber mensagens de MRs abertos nesses repositórios de forma separada, em canais diferentes.
Precisaremos ter uma url disponível para o gitlab realizar requisições ao nosso webhook, portanto, é necessário hospedar o projeto em um servidor node. Utilizaremos o Heroku neste exemplo.
No mattermost, é necessário criar webhooks de entrada nos canais que deseja receber mensagens de merge requests abertos. Para tal, vá no menu Integrações.
Em seguida, Webhooks Entrada
Clique no botão Adicionar Webhooks Entrada
Preencha os dados do formulário e clique em Salvar
Guarde a URL gerada
Repita o mesmo processo para o canal de MRs frontend
No gitlab, abra o repositório do qual que deseja receber mensagens, vá no menu Settings, em seguida, Webhooks.
Adicione a URL de onde hospedou o projeto, gere um Secret Token (uma string qualquer) e guarde-o, pois utilizaremos como variável de ambiente, e marque somente a trigger Merge request events. Em seguida, clique no botão Add webhook.
Repita o processo para os outros projetos.
Agora precisamos adicionar algumas variáveis de ambiente no servidor onde foi realizado o deploy do nosso webhook.
Secret token que foi utilizado na hora de adicionar os webhooks no Gitlab. Neste exemplo, utilizamos 84316468-5999-421f-acae-a468e5e23a67
Webhook que criamos no mattermost para o backend. Pode ser mais de um, separados por , caso desejável. Neste exemplo, utilizamos https://chat.example.com.br/hooks/u9n8njxeup8d7mdybn5tbjbs8a
Urls dos projetos backend, separados por ,. Pode ser utilizado parte da url. Neste exemplo, utilizamos project-backend,project-database
Webhook que criamos no mattermost para o frontend. Pode ser mais de um, separados por , caso desejável. Neste exemplo, utilizamos https://chat.example.com.br/hooks/e51m8g9t9jbt8x6pwmnyyk6a7c
Urls dos projetos frontend, separados por ,. Pode ser utilizado parte da url. Neste exemplo, utilizamos project-front
É possível enviar mensagens de MRs abertos de outras equipes (DevOps por exemplo) criando mais variáveis de ambiente. Basta seguir o padrão PROJECT_<NOME_DA_EQUIPE>_MM_WEBHOOKS para os webhooks do mattermost, e PROJECT_<NOME_DA_EQUIPE>_URLS para urls dos projetos gitlab.





