Compartilhar via


Criar um consumidor personalizado para ganchos de serviço

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Use ganchos de serviço para notificar sistemas externos sobre eventos em seu projeto do Azure DevOps. Uma extensão de consumidor personalizada envia um HTTP POST para um ponto de extremidade que você configura quando ocorrem eventos específicos.

Dica

Se você estiver iniciando uma nova extensão do Azure DevOps, experimente essas coleções de exemplo mantidas primeiro— elas funcionam com builds de produtos atuais e abrangem cenários modernos (por exemplo, adicionando guias em páginas de solicitação pull).

Se um exemplo não funcionar em sua organização, instale-o em uma organização pessoal ou de teste e compare as IDs de destino do manifesto de extensão e as versões da API com as documentações atuais. Para referência e APIs, consulte:

Este artigo mostra como criar uma extensão que implementa um serviço de consumidor de exemplo. O consumidor de exemplo:

  • Escuta três eventos do Git: código enviado por push, solicitação de pull criada e solicitação de pull atualizada
  • Envia um HTTP POST com o conteúdo do evento para uma URL de ponto de extremidade configurável

Diagrama que mostra um serviço de consumidor de exemplo enviando mensagens HTTP para eventos de solicitação de push e pull de código.

Para obter a origem completa, consulte o repositório GitHub de exemplo de extensão. Para todos os tipos de eventos disponíveis, consulte os tipos de evento do gancho de serviço.

Dica

Para obter as diretrizes mais recentes de desenvolvimento de extensão, incluindo temas e migração do VSS. SDK, consulte o portal do desenvolvedor do SDK de Extensão do Azure DevOps.

Como funcionam os ganchos de serviço

Os ganchos de serviço têm três componentes:

  • Os editores emitem eventos, como "código enviado por push" ou "solicitação de pull criada".
  • As assinaturas correspondem a eventos específicos a ações.
  • Os consumidores definem as ações a serem executadas, como enviar um HTTP POST.

Diagrama que mostra o fluxo do gancho de serviço: os editores emitem eventos, assinaturas correspondem a eventos e ações são executadas quando um evento corresponde a uma assinatura.

Neste artigo, a extensão implementa um consumidor personalizado. Quando ocorre um evento correspondente, o consumidor envia um HTTP POST com a carga útil do evento para o endpoint configurado na URL da assinatura.

Criar a extensão

1. Configurar o projeto

Crie seu projeto de extensão. Para obter instruções, consulte Desenvolver uma extensão da Web.

2. Adicionar a contribuição do consumidor

Adicione a contribuição do consumidor ao arquivo de manifesto (vss-extension.json). O exemplo a seguir mostra um manifesto completo com um consumidor de gancho de serviço:

{
    "manifestVersion": 1,
    "id": "samples-service-hooks-consumer",
    "version": "0.1.2",
    "name": "Service Hooks Sample",
    "description": "A simple extension that demonstrates how to contribute a consumer service into service hooks.",
    "publisher": "fabrikam",
    "public": false,
    "icons": {
        "default": "images/logo.png"
    },
    "scopes": [],
    "files": [
        {
            "path": "images",
            "addressable": true
        }
    ],
    "content": {
        "details": {
            "path": "readme.md"
        }
    },
    "categories": [
        "Developer samples"
    ],
    "targets": [
        {
            "id": "Microsoft.VisualStudio.Services"
        }
    ],
    "contributions": [
        {
            "id": "consumer",
            "type": "ms.vss-servicehooks.consumer",
            "targets": [
                "ms.vss-servicehooks.consumers"
            ],
            "properties": {
                "id": "consumer",
                "name": "Sample Consumer",
                "description": "Sample consumer service",
                "informationUrl": "https://aka.ms/vsoextensions",
                "inputDescriptors": [
                    {
                        "id": "url",
                        "isRequired": true,
                        "name": "URL",
                        "description": "URL to post event payload to",
                        "inputMode": "textbox"
                    }
                ],
                "actions": [
                    {
                        "id": "performAction",
                        "name": "Perform action",
                        "description": "Posts a standard event payload",
                        "supportedEventTypes": [
                            "git.push",
                            "git.pullrequest.created",
                            "git.pullrequest.updated"
                        ],
                        "publishEvent": {
                            "url": "{{{url}}}",
                            "resourceDetailsToSend": "all",
                            "messagesToSend": "all",
                            "detailedMessagesToSend": "all"
                        }
                    }
                ]
            }
        }
    ]
}

Observação

Atualize a propriedade publisher para que corresponda ao ID do editor.

A contributions matriz é a seção chave. Cada contribuição define:

  • Tipo: ms.vss-servicehooks.consumer — registra um serviço de consumidor
  • Destino: ms.vss-servicehooks.consumers — a coleção de serviços do consumidor
  • Propriedades: Configuração do consumidor, incluindo entradas e ações (consulte a referência de propriedades)

3. Empacotar, publicar e testar

Empacotar e publicar a extensão em sua organização do Azure DevOps. Em seguida, crie uma assinatura de gancho de serviço que use seu consumidor personalizado para verificar se ele funciona.

Referência de propriedade

Propriedades do consumidor

Propriedade Descrição
id Identificação Única para o serviço de atendimento ao consumidor.
nome Nome de exibição mostrado quando os usuários criam assinaturas de gancho de serviço.
descrição Descreve o serviço do consumidor.
informationUrl URL em que os usuários podem saber mais sobre a extensão.
descritoresDeEntrada Entradas que os usuários fornecem ao criar assinaturas (por exemplo, um endpoint de URL).
Ações Ações a serem executadas quando os eventos ocorrem e quais tipos de evento disparam cada ação.

Propriedades da ação

Cada ação na actions matriz tem as seguintes propriedades:

Propriedade Descrição
id ID exclusiva para a ação.
nome Nome de exibição da ação.
descrição Descrição do que a ação faz.
tiposDeEventoSuportados Matriz de IDs de tipo de evento que disparam essa ação. Para os tipos disponíveis, consulte os tipos de eventos do gancho de serviço.
publishEvent.url URL do endpoint que recebe HTTP POST. Use a sintaxe Mustache de chave tripla ({{{inputId}}}) para substituir os valores fornecidos por inputDescriptors pelos usuários ao criar a assinatura.

Próxima etapa