O Service Hooks é um recurso (event handler) do Azure DevOps para trabalhar com ações baseadas em eventos que aconteçam em seus projetos. Em um post recente, demonstrei o uso do Service Hooks para escrever mensagens no Slack, mediante evento no Azure DevOps. Geralmente, o event handler executa um código hospedado em servidor remoto.
Como estrutura, o Service Hooks possui tipicamente três partes:
- Publishers: são os eventos do Azure DevOps
- Subscribers: criados a partir dos eventos
- Consumers: componente ou serviço externo que é acionado pela subscription
E os atuais serviços disponíveis como destino do Service Hooks são:
Por aqui, vamos trabalhar com Web Hooks, utilizando o Azure Functions no Portal Azure. Criaremos uma nova função serverless, que será executada a partir de um evento configurado no Azure DevOps.
Inicie pela instalação de um novo Aplicativo de Funções. Acesse + Criar um recurso > Computação > Aplicativo de Funções e escolha a opção Criar.
Em seguida, acesse Aplicativo de Funções e crie uma nova função (+ Functions). Escolha o ambiente de desenvolvimento no passo 1.
No passo 2, escolha o método de deployment (direto no VS ou utilizando o Deployment Center).
Feita a configuração no Aplicativos de Funções, faça a publicação da função neste serviço de aplicativo. No Visual Studio, crie um novo projeto em Cloud > Azure Functions. Após o desenvolvimento da função, escolha a opção Publicar.
Na janela inicial (Escolher um destino de publicação), selecione o serviço de aplicativo que acabamos de configurar. E então na próxima janela clique em publicar. Copie o link gerado.
Agora no Azure DevOps, acesse o Project Settings do projeto e uma nova subscription no Service Hooks.
Escolha qual será o Trigger para disparar a ação. No meu exemplo, defini que na modificação de um Work item, será executada a Action que é a função criada anteriormente.
Pronto! O Web hooks foi criado e podemos visualizar no histórico que a cada vez que o evento acontecer (neste caso a modificação no work item), a ação de executar a função será realizada.