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".
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.
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
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. |
- Implante sua extensão em sua organização do Azure DevOps e teste-a.