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.
Um recurso de webhook permite que você integre seu pipeline com um serviço externo para automatizar o fluxo de trabalho.
webhooks:
- webhook: string # Required as first property. Name of the webhook.
connection: string # Required. Name of the connection. In case of offline webhook this will be the type of Incoming Webhook otherwise it will be the type of the webhook extension.
type: string # Name of the webhook extension. Leave this empty if it is an offline webhook.
filters: [ filter ] # List of trigger filters.
Definições que fazem referência a esta definição: resources.webhooks
Propriedades
webhook string. Obrigatório como primeira propriedade.
Nome do webhook. Valores aceitáveis: [-_A-Za-z0-9]*.
Para o webhook do Azure DevOps, webhook deve ser sempre um WebHookarquivo .
connection string. Obrigatório
Nome da conexão. No caso de webhook offline, este será o tipo de Webhook de entrada, caso contrário, será o tipo da extensão webhook.
type string.
Nome da extensão webhook. Deixe isso vazio se for um webhook offline.
filters
recursos.webhooks.webhook.filters.
Lista de filtros de gatilho.
Exemplos
Exemplo básico
Você pode definir seu pipeline da seguinte maneira.
resources:
webhooks:
- webhook: WebHook
connection: IncomingWH
steps:
- script: echo ${{ parameters.WebHook.resource.message.title }}
Para acionar seu pipeline usando o webhook, você precisa fazer uma POST solicitação para https://dev.azure.com/<org_name>/_apis/public/distributedtask/webhooks/<WebHook Name>?api-version=6.0-preview.
O Nome do WebHook deve corresponder ao da Conexão de Serviço WebHook de Entrada.
Este ponto de extremidade está disponível publicamente e nenhuma autorização é necessária. O pedido deve ter o seguinte órgão:
{
"resource": {
"message": {
"title": "Hello, world!",
"subtitle": "I'm using WebHooks!"
}
}
}
Quando você acessar dados do corpo de solicitação do webhook, esteja ciente de que isso pode levar a YAML incorreto. Por exemplo, se no pipeline anterior, sua etapa for lida - script: echo ${{ parameters.WebHook.resource.message }}e você acionar o pipeline por meio de um webhook, o pipeline não será executado. Isso ocorre porque no processo de substituição ${{ parameters.WebHook.resource.message.title }} por message, que contém o seguinte JSON, o YAML gerado torna-se inválido.
{
"title": "Hello, world!",
"subtitle": "I'm using WebHooks!"
}
Como o YAML gerado se torna inválido, nenhuma execução de pipeline é enfileirada em resposta.
Impedir execuções não autorizadas de pipeline
Os Webhooks permitem que qualquer pessoa acione seu pipeline, desde que saiba os nomes da sua organização e a conexão do serviço webhook.
Você pode impedir a execução de pipeline não autorizado definindo um segredo ao criar uma conexão de serviço Webhook de entrada. Você também precisa especificar o nome do cabeçalho HTTP que contém a soma de verificação SHA-1 do corpo do webhook.
Para verificar se uma chamada de API REST de webhook de entrada está autorizada, o Azure Pipelines calcula a soma de verificação SHA-1 do corpo da solicitação usando o segredo como chave. Em seguida, ele a compara com a soma de verificação passada no cabeçalho da solicitação. Desta forma, o interlocutor prova que conhece o segredo.
Vejamos um exemplo. Digamos que você configurou uma conexão de serviço Webhook de entrada chamada IncomingWH, especificado que o segredo é secret, e que a soma de verificação é enviada no cabeçalho HTTP chamado X-WH-Checksum. Imagine que você tem um pipeline que define um recurso Webhook.
Digamos que você queira acionar o pipeline usando o seguinte corpo de solicitação:
{"resource":{"message":{"title":"Hello, world!","subtitle":"I'm using WebHooks!"}}}
Para fazer isso, você precisa fazer uma POST solicitação e https://dev.azure.com/<org_name>/_apis/public/distributedtask/webhooks/IncomingWH?api-version=6.0-preview adicionar o X-WH-Checksum cabeçalho com o valor de 750D33212D3AD4932CC390819050734831A0A94F. Não é necessário especificar nenhum nome de usuário ou senha ou qualquer outro tipo de informação de autenticação.
Os Pipelines do Azure calcularão independentemente a soma de verificação SHA-1 do corpo usando secret como chave e gerarão o mesmo 750D33212D3AD4932CC390819050734831A0A94F valor. Como os valores correspondem, a chamada é autorizada e a fila de pipeline prossegue.
Você calcula o X-WH-Checksum valor do cabeçalho, em pseudocódigo, como SHA1(secret).ComputeHash(requestBody). Você pode usar o . NET para System.Security.Cryptography.HMACSHA1 este fim.
Para evitar falhas de validação devido a novas linhas ou espaços em branco, recomendamos que você envie o corpo de forma minimizada. Ou seja, enviar
{"resource":{"message":{"title":"Hello, world!","subtitle":"I'm using WebHooks!"}}}
Em vez de
{
"resource": {
"message": {
"title": "Hello, world!",
"subtitle": "I'm using WebHooks!"
}
}
}
Embora os dois objetos JSON acima representem o mesmo objeto, eles geram somas de verificação SHA-1 diferentes. Isso ocorre porque SHA-1 é calculado em sua representação de cadeia de caracteres, que é diferente.