Compartilhar via


Webhooks

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Este artigo descreve webhooks e como configurá-los para seu projeto do Azure DevOps. Os webhooks fornecem uma maneira de enviar uma representação JSON de um evento do Azure DevOps para qualquer serviço que tenha um ponto de extremidade público.

Observação

O Azure DevOps não cobra pela configuração de ganchos de serviço ou integração com serviços externos. Consulte o site do serviço específico para obter preços relacionados aos seus serviços.

Pré-requisitos

Você precisa dos seguintes pré-requisitos para gerenciar webhooks para uma organização do Azure DevOps:

  • Função de proprietário ou administrador de coleção de projetos na organização.

  • Um projeto na organização e um serviço com um ponto de extremidade HTTP ou HTTPS público para o qual você deseja enviar eventos do Azure DevOps.

    Importante

    É recomendável usar apenas pontos de extremidade HTTPS. O HTTP tem o potencial de enviar dados privados, incluindo cabeçalhos de autenticação, não criptografados na carga útil do evento. Você deve usar HTTPS para autenticação básica em um webhook.

Enviar representação JSON para um serviço

  1. Em seu projeto do Azure DevOps, acesse Configurações>do projeto Ganchos de serviço em .https://<organization-name>/<project-name>/_settings/serviceHooks

    Captura de tela da opção de ganchos de serviço nas configurações do projeto.

  2. Na página Ganchos de Serviço, selecione o + ícone ou Criar assinatura.

    Captura de tela da seleção Criar assinatura na página Ganchos de serviço.

  3. Na tela Serviço, selecione Web Hooks e, em seguida, selecione Avançar.

    Captura de tela da seleção de Web Hooks na página Serviço.

  4. Na tela Gatilho , selecione e configure o evento do Azure DevOps no qual você deseja disparar o webhook e selecione Avançar. Para obter mais informações sobre as cargas JSON postadas pelo consumidor do Azure DevOps, consulte Eventos de ganchos de serviço.

    Captura de tela da seleção e configuração do evento de gatilho.

  5. Na tela Ação, configure a URL de destino e o que fazer quando o evento ocorrer. Para obter mais informações sobre o que inserir em Detalhes do recurso a serem enviados, Mensagens a serem enviadas e Mensagens detalhadas a serem enviadas, consulte Detalhes do recurso a serem enviados.

    Observação

    Os webhooks não podem ser direcionados a endereços IPv4/IPv6 de host local (loopback) ou intervalo especial.

  6. Selecione Testar para testar a assinatura do gancho de serviço.

    Captura de tela da configuração da caixa de diálogo Ação.

  7. Quando o teste for concluído com êxito, feche a tela de notificação e selecione Concluir na tela Ação.

    Captura de tela dos resultados do teste para a assinatura do gancho de serviço

  8. Agora o webhook está configurado. Vá para o serviço de destino para exibir a representação JSON.

    Captura de tela da visualização da representação JSON.

Dica

Você também pode criar um webhook programaticamente. Para obter mais informações, consulte Criar uma assinatura de gancho de serviço programaticamente.

Detalhes do recurso a serem enviados

As configurações Detalhes do recurso a serem enviados, Mensagens a serem enviadas e Mensagens detalhadas a serem enviadas no Painel de ações controlam o tamanho da carga JSON a ser enviada. Detalhes do recurso a serem enviados controla quanto do recurso deve ser enviado. O padrão é Todos, mas você também pode optar por enviar Mínimo, que envia apenas campos-chave, como URL e ID, ou Nenhum.

None e Minimal são úteis em cenários em que o chamador não precisa de muitas ou nenhuma informação sobre o recurso, pois ele depende da própria mensagem ou da mensagem detalhada. None e Minimal também são úteis por motivos de segurança. O chamador deve chamar de volta para Azure DevOps Services e passar por verificações normais de segurança e permissão para obter mais detalhes sobre o recurso.

O JSON de exemplo a seguir mostra detalhes mínimos sobre o recurso:

   {
       "eventType": "git.push",
       ...
       "messages": {
           "text": "...",
           "html": "...",
           "markdown": "..."
       },
       "detailedMessage": {
           "text": "...",
           "html": "...",
           "markdown": "..."
       },
       "resource": {
           "id": "...",
           "url": "https://...",
           "name": "...",
           "field1:": "..."
       }
   }