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