Partilhar via


Criar um consumidor personalizado para ganchos de serviço

Serviços de DevOps do Azure | Azure DevOps Server | Azure DevOps Server 2022

Use ganchos de serviço para notificar sistemas que não sejam da Microsoft sobre eventos que ocorrem em seu projeto. Um consumidor personalizado envia uma mensagem HTTP para o endpoint definido no manifesto da sua extensão.

Sugestão

Se você estiver iniciando uma nova extensão do Azure DevOps, experimente essas coleções de exemplo mantidas primeiro — elas funcionam com compilações 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 e as versões de API do manifesto de extensão com os documentos atuais. Para referência e APIs, consulte:

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 submetido
    • Pull request criado
    • Pull request atualizado
  • Ações suportadas a serem tomadas quando ocorrem eventos:
    • Enviar uma mensagem HTTP

Observação

Este artigo refere-se ao diretório base do seu projeto como home.

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

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.

Sugestão

Consulte a nossa documentação mais atual sobre o desenvolvimento de extensões usando o SDK da Azure DevOps .

Como funcionam os ganchos de serviço

Os publicadores de ganchos de serviço definem um conjunto de eventos. As assinaturas escutam os eventos e definem ações que são executadas quando um evento é acionado.

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

Este diagrama mostra o fluxo geral do hook de serviço: os publicadores emitem eventos, as assinaturas correspondem aos eventos, e as ações são executadas quando ocorre uma correspondência. No exemplo deste artigo, uma extensão implementa o consumidor. Quando ocorre um evento suportado, a ação configurada do consumidor envia uma mensagem HTTP para o endpoint especificado no manifesto da extensão.

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"
                        }
                    }
                ]
            }
        }
    ]
}

Observação

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.
  • Objetivo 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.

Propriedade Descrição
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.
descritoresDeEntrada 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:

Propriedade Descrição
id ID do seu serviço de ação.
nome Nome da ação.
descrição Descrição pormenorizada da ação.
tiposDeEventosSuportados 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 A URL de endpoint que recebe a mensagem HTTP. Você pode modelar esse valor com tokens do inputDescriptors; os usuários fornecem os valores reais quando criam a assinatura.
  1. Implante sua extensão em sua organização do Azure DevOps e teste-a.

Próximos passos