Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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).
- Exemplo de extensão do Azure DevOps (GitHub) — um exemplo inicial compacto que demonstra padrões de extensão comuns: https://github.com/microsoft/azure-devops-extension-sample
- Exemplos de extensão do Azure DevOps (coleções herdadas e guia de contribuições) — instale para inspecionar alvos da interface do utilizador 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 (procure exemplos de DevOps do Azure) — exemplos selecionados e atualizados na documentação 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 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.
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.
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
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. |
- Implante sua extensão em sua organização do Azure DevOps e teste-a.