Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Prostředek webhooku umožňuje integrovat kanál s externí službou pro automatizaci pracovního postupu.
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.
Definice, které odkazují na tuto definici: resources.webhooks
Vlastnosti
webhook
řetězec. Povinné jako první vlastnost.
Název webhooku Přijatelné hodnoty: [-_A-Za-z0-9]*.
Pro webhook webhook
Azure DevOps musí být vždy a WebHook
.
connection
řetězec. Povinné.
Název připojení. V případě offline webhooku se jedná o typ příchozího webhooku, jinak se jedná o typ rozšíření webhooku.
type
řetězec.
Název rozšíření webhooku Pokud se jedná o offline webhook, nechte tento prázdný.
filters
resources.webhooks.webhook.filters.
Seznam filtrů aktivačních událostí.
Příklady
Základní příklad
Kanál můžete definovat následujícím způsobem.
resources:
webhooks:
- webhook: WebHook
connection: IncomingWH
steps:
- script: echo ${{ parameters.WebHook.resource.message.title }}
Pokud chcete aktivovat kanál pomocí webhooku, musíte provést POST
požadavek na https://dev.azure.com/<org_name>/_apis/public/distributedtask/webhooks/<WebHook Name>?api-version=6.0-preview
.
Název webhooku musí odpovídat názvu příchozí služby WebHook.
Tento koncový bod je veřejně dostupný a nevyžaduje se žádná autorizace. Požadavek by měl mít následující text.
{
"resource": {
"message": {
"title": "Hello, world!",
"subtitle": "I'm using WebHooks!"
}
}
}
Když přistupujete k datům z textu požadavku webhooku, mějte na paměti, že to může vést k nesprávnému YAML. Pokud se například v předchozím kanálu přečte - script: echo ${{ parameters.WebHook.resource.message }}
váš krok a aktivujete kanál prostřednictvím webhooku, kanál se nespustí. Důvodem je to, že v procesu nahrazení ${{ parameters.WebHook.resource.message.title }}
kódem message
JSON, který obsahuje následující JSON, se vygenerovaný YAML stane neplatným.
{
"title": "Hello, world!",
"subtitle": "I'm using WebHooks!"
}
Vzhledem k tomu, že vygenerovaný YAML je neplatný, není v odpovědi zařazeno žádné spuštění kanálu do fronty.
Zabránění neoprávněným spuštěním kanálu
Webhooky umožňují každému aktivovat váš kanál, pokud zná názvy vaší organizace a připojení služby webhooku.
Neoprávněným spuštěním kanálu můžete zabránit definováním tajného kódu při vytváření připojení služby Příchozí webhook. Musíte také zadat název hlavičky HTTP, která obsahuje kontrolní součet SHA-1 těla webhooku.
Pokud chcete ověřit, jestli je příchozí volání rozhraní REST API webhooku autorizované, Azure Pipelines vypočítá kontrolní součet SHA-1 těla požadavku pomocí tajného klíče jako klíče. Pak ho porovná s kontrolním součtem předanými v hlavičce požadavku. Tímto způsobem volající prokáže, že zná tajemství.
Podívejme se na příklad. Řekněme, že jste nakonfigurovali příchozí připojení služby Webhook s názvem IncomingWH
, zadaný tajný klíč je secret
a že kontrolní součet se odešle v hlavičce HTTP s názvem X-WH-Checksum
. Představte si, že máte kanál, který definuje prostředek Webhooku.
Řekněme, že chcete kanál aktivovat pomocí následujícího textu požadavku:
{"resource":{"message":{"title":"Hello, world!","subtitle":"I'm using WebHooks!"}}}
Chcete-li to provést, musíte provést POST
požadavek na https://dev.azure.com/<org_name>/_apis/public/distributedtask/webhooks/IncomingWH?api-version=6.0-preview
a přidat hlavičku X-WH-Checksum
s hodnotou 750D33212D3AD4932CC390819050734831A0A94F
. Nemusíte zadávat žádné uživatelské jméno a heslo ani žádný jiný typ ověřovacích informací.
Azure Pipelines nezávisle vypočítá kontrolní součet SHA-1 těla pomocí secret
klíče a vygeneruje stejnou 750D33212D3AD4932CC390819050734831A0A94F
hodnotu. Vzhledem k tomu, že se hodnoty shodují, volání je autorizované a bude pokračovat ve frontě kanálu.
Vypočítáte hodnotu hlavičky v pseudokódu X-WH-Checksum
jako SHA1(secret).ComputeHash(requestBody)
. Můžete použít . System.Security.Cryptography.HMACSHA1
NET třída pro tento účel.
Pokud chcete zabránit selháním ověřování kvůli novým řádkům nebo prázdným znakům, doporučujeme odeslat text v minimalizovaném formuláři. To znamená, odeslat
{"resource":{"message":{"title":"Hello, world!","subtitle":"I'm using WebHooks!"}}}
Namísto
{
"resource": {
"message": {
"title": "Hello, world!",
"subtitle": "I'm using WebHooks!"
}
}
}
I když dva objekty JSON výše představují stejný objekt, generují různé kontrolní součty SHA-1. Důvodem je to, že sha-1 se vypočítá na řetězcové reprezentaci, což se liší.