Share via


Criar um consumidor personalizado para ganchos de serviço

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

Com ganchos de serviço, você pode notificar sistemas de terceiros sobre eventos que ocorrem em seu projeto. Você pode usar um consumidor personalizado para enviar uma mensagem HTTP para o ponto de extremidade definido no manifesto da extensão.

Este artigo explica o desenvolvimento de uma extensão que implementa um serviço de consumidor de exemplo, que inclui os seguintes eventos e ações.

  • Eventos com suporte que disparam as seguintes ações:
    • Código enviado por push
    • Solicitação de pull criada
    • Solicitação de pull atualizada
  • Ações com suporte a serem executadas quando ocorrerem eventos:
    • Executar ação (Enviar mensagem HTTP)

Observação

Neste artigo, nos referimos ao diretório base do seu projeto como "página inicial".

Serviço de consumidor de exemplo

Para obter mais informações, consulte o repositório GitHub de exemplo de extensão. Para obter uma lista de todos os eventos com suporte que você pode usar como gatilhos para sua extensão de consumidor personalizada, consulte Lista de tipos de eventos.

Dica

Confira nossa documentação mais recente sobre o desenvolvimento de extensão usando o SDK da Extensão do Azure DevOps.

Como funcionam os ganchos de serviço

Os editores de gancho de serviço definem um conjunto de eventos. As assinaturas escutam e aguardam os eventos e definem ações para quando o evento é disparado.

Diagrama de ganchos de serviço

Esta é uma descrição geral de como todas as nossas implementações de gancho de serviço funcionam. Para nosso caso, especificamos nosso consumidor definido por uma extensão, bem como a ação especificada para quando um evento ocorre.

Criar a extensão

  1. Veja como criar sua extensão do zero.

  2. Adicione a contribuição específica para a implementação personalizada do consumidor ao arquivo de manifesto básico. Veja o exemplo a seguir de como seu manifesto deve ficar depois de adicionar a contribuiçã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

Lembre-se de atualizar a publisher propriedade.

Para cada contribuição em sua extensão, o manifesto define os itens a seguir.

  • Tipo de contribuição – serviço de consumidor (ms.vss-servicehooks.consumer) nesse caso
  • Destino de contribuição – serviços de consumidor (ms.vss-servicehooks.consumers) nesse caso
  • Propriedades específicas para cada tipo de contribuição

Os consumidores têm as propriedades a seguir.

Propriedade Descrição
id ID exclusiva para seu serviço de consumidor.
name Nome do consumidor personalizado, que fica visível durante a criação da assinatura do gancho de serviço.
descrição Descreve seu serviço de consumidor.
informationUrl Encontre mais informações sobre sua extensão.
inputDescriptors Entradas a serem usadas por usuários que estão criando assinaturas com o serviço de consumidor.
Ações Descreve as ações a serem tomadas e quais eventos disparam essas ações.

As ações para o consumidor têm as seguintes propriedades:

Propriedade Descrição
id ID do serviço de ação.
name Nome da ação.
descrição Descrição detalhada da ação.
supportedEventTypes Matriz de tipos de gatilho para os quais essa ação pode ser usada. Para obter mais informações, consulte Lista de tipos de eventos.
publishEvent.url URL para a qual a mensagem HTTP é enviada. Ele pode ser modelo por valores fornecidos por inputDescriptors. Seus valores reais são definidos pelo usuário quando a assinatura é criada.
  1. Implante sua extensão em sua organização do Azure DevOps e teste-a.

Próximas etapas