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 que não são da Microsoft sobre eventos que ocorrem em seu projeto. Um consumidor personalizado envia uma mensagem HTTP para o endpoint definido no manifesto da extensão.
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 explica como desenvolver 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:
- Enviar uma mensagem HTTP
Observação
Este artigo refere-se 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 a nossa documentação mais nova sobre desenvolvimento de extensões usando o Azure DevOps Extension SDK.
Como funcionam os ganchos de serviço
Os editores de gancho 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.
Este diagrama mostra o fluxo geral do gancho de serviço: os editores 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 apoiado, a ação configurada do consumidor envia uma mensagem HTTP para o ponto de extremidade especificado no manifesto da extensão.
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 do consumidor (ms.vss-servicehooks.consumer) nesse caso.
- Destino de contribuição – serviços ao 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 atendimento ao cliente. |
| nome | 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. |
| descritoresDeEntrada | Entradas a serem usadas 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 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. |
| nome | Nome da ação. |
| descrição | Descrição detalhada da ação. |
| tiposDeEventoSuportados | 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 | O URL do ponto de extremidade que recebe a mensagem HTTP. Você pode modelar este valor com tokens de inputDescriptors; os usuários fornecem os valores reais quando criam a assinatura. |
- Implante sua extensão em sua organização do Azure DevOps e teste-a.