Service Hooks é um recurso (event handlerdo 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:

service-hooks-availablePor 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.

azure-function-app

Em seguida, acesse Aplicativo de Funções e crie uma nova função (+ Functions). Escolha o ambiente de desenvolvimento no passo 1.

azure-functions

No passo 2, escolha o método de deployment (direto no VS ou utilizando o Deployment Center).

azure-functions-02

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.

azure-function-VS

Agora no Azure DevOps, acesse o Project Settings do projeto e uma nova subscription no Service Hooks.

service-hooks-azure-devops

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.

service-hooks-subscription

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.

service-hooks-status