Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Use ganchos de serviço para notificar sistemas externos sobre eventos em seu projeto do Azure DevOps. Uma extensão de consumidor personalizada envia um HTTP POST para um ponto de extremidade que você configura quando ocorrem eventos específicos.
Dica
Se você estiver iniciando uma nova extensão do Azure DevOps, experimente essas coleções de exemplo mantidas primeiro— elas funcionam com builds de produtos atuais e abrangem cenários modernos (por exemplo, adicionando guias em páginas de solicitação pull).
- Exemplo de extensão do Azure DevOps (GitHub)— um exemplo de inicialização compacta que demonstra padrões de extensão comuns: https://github.com/microsoft/azure-devops-extension-sample
- Exemplos de extensão do Azure DevOps (coleção legada e guia de contribuições) – instale para inspecionar os alvos da UI ou exiba a origem: https://marketplace.visualstudio.com/items/ms-samples.samples-contributions-guide e https://github.com/Microsoft/vso-extension-samples/tree/master/contributions-guide
- Exemplos do Microsoft Learn (navegar por amostras do Azure DevOps) — amostras atualizadas e selecionadas em documentos da Microsoft: /samples/browse/?terms=azure%20devops%20extension
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 do manifesto de extensão e as versões da API com as documentações atuais. Para referência e APIs, consulte:
Este artigo mostra como criar uma extensão que implementa um serviço de consumidor de exemplo. O consumidor de exemplo:
- Escuta três eventos do Git: código enviado por push, solicitação de pull criada e solicitação de pull atualizada
- Envia um HTTP POST com o conteúdo do evento para uma URL de ponto de extremidade configurável
Para obter a origem completa, consulte o repositório GitHub de exemplo de extensão. Para todos os tipos de eventos disponíveis, consulte os tipos de evento do gancho de serviço.
Dica
Para obter as diretrizes mais recentes de desenvolvimento de extensão, incluindo temas e migração do VSS. SDK, consulte o portal do desenvolvedor do SDK de Extensão do Azure DevOps.
Como funcionam os ganchos de serviço
Os ganchos de serviço têm três componentes:
- Os editores emitem eventos, como "código enviado por push" ou "solicitação de pull criada".
- As assinaturas correspondem a eventos específicos a ações.
- Os consumidores definem as ações a serem executadas, como enviar um HTTP POST.
Neste artigo, a extensão implementa um consumidor personalizado. Quando ocorre um evento correspondente, o consumidor envia um HTTP POST com a carga útil do evento para o endpoint configurado na URL da assinatura.
Criar a extensão
1. Configurar o projeto
Crie seu projeto de extensão. Para obter instruções, consulte Desenvolver uma extensão da Web.
2. Adicionar a contribuição do consumidor
Adicione a contribuição do consumidor ao arquivo de manifesto (vss-extension.json). O exemplo a seguir mostra um manifesto completo com um consumidor de gancho de serviç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
Atualize a propriedade publisher para que corresponda ao ID do editor.
A contributions matriz é a seção chave. Cada contribuição define:
-
Tipo:
ms.vss-servicehooks.consumer— registra um serviço de consumidor -
Destino:
ms.vss-servicehooks.consumers— a coleção de serviços do consumidor - Propriedades: Configuração do consumidor, incluindo entradas e ações (consulte a referência de propriedades)
3. Empacotar, publicar e testar
Empacotar e publicar a extensão em sua organização do Azure DevOps. Em seguida, crie uma assinatura de gancho de serviço que use seu consumidor personalizado para verificar se ele funciona.
Referência de propriedade
Propriedades do consumidor
| Propriedade | Descrição |
|---|---|
| id | Identificação Única para o serviço de atendimento ao consumidor. |
| nome | Nome de exibição mostrado quando os usuários criam assinaturas de gancho de serviço. |
| descrição | Descreve o serviço do consumidor. |
| informationUrl | URL em que os usuários podem saber mais sobre a extensão. |
| descritoresDeEntrada | Entradas que os usuários fornecem ao criar assinaturas (por exemplo, um endpoint de URL). |
| Ações | Ações a serem executadas quando os eventos ocorrem e quais tipos de evento disparam cada ação. |
Propriedades da ação
Cada ação na actions matriz tem as seguintes propriedades:
| Propriedade | Descrição |
|---|---|
| id | ID exclusiva para a ação. |
| nome | Nome de exibição da ação. |
| descrição | Descrição do que a ação faz. |
| tiposDeEventoSuportados | Matriz de IDs de tipo de evento que disparam essa ação. Para os tipos disponíveis, consulte os tipos de eventos do gancho de serviço. |
| publishEvent.url | URL do endpoint que recebe HTTP POST. Use a sintaxe Mustache de chave tripla ({{{inputId}}}) para substituir os valores fornecidos por inputDescriptors pelos usuários ao criar a assinatura. |