Partilhar via


Criar um consumidor personalizado para ganchos de serviço

Serviços de DevOps do Azure | 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 descreve o desenvolvimento de uma extensão que implementa um exemplo de serviço ao consumidor, que inclui os seguintes eventos e ações.

  • Eventos suportados que acionam as seguintes ações:
    • Código empurrado
    • Pull request criado
    • Pull request atualizado
  • Ações suportadas a serem tomadas quando ocorrem eventos:
    • Executar ação (Enviar mensagem HTTP)

Nota

Neste artigo, referimo-nos ao diretório inicial do seu projeto como "home".

Exemplo de serviço ao consumidor

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

Gorjeta

Confira nossa documentação mais recente sobre desenvolvimento de extensões usando o SDK de 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 subscrições ouvem e aguardam os eventos e definem ações para quando o evento é acionado.

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 o 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 a sua extensão a partir do zero.

  2. Adicione a contribuição específica para implementação personalizada do consumidor ao seu 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"
                        }
                    }
                ]
            }
        }
    ]
}

Nota

Lembre-se de atualizar a publisher propriedade.

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

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

Os consumidores têm as seguintes propriedades.

Property Description
id ID exclusivo para o seu serviço ao consumidor.
nome Nome do consumidor personalizado, que é visível durante a criação da assinatura do gancho de serviço.
descrição Descreve o serviço ao consumidor.
informaçõesUrl Encontre mais informações sobre a sua extensão.
inputDescritores Insumos a serem usados por usuários que estão criando assinaturas com o serviço ao consumidor.
ações Descreve as ações a serem executadas e quais eventos acionam essas ações.

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

Property Description
id ID do seu serviço de ação.
nome Nome da ação.
descrição Descrição pormenorizada da ação.
supportedEventTypes Matriz de tipos de gatilho para os quais esta ação pode ser usada. Para obter mais informações, consulte Lista de tipos de eventos.
publishEvent.url URL para onde a mensagem HTTP é enviada. Ele pode ser modelado 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óximos passos