resources.webhooks.webhook definíciója
A webhook-erőforrások lehetővé teszik a folyamat egy külső szolgáltatással való integrálását a munkafolyamat automatizálásához.
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.
A definícióra hivatkozó definíciók: resources.webhooks
Tulajdonságok
webhook
Karakterlánc. Első tulajdonságként kötelező megadni.
A webhook neve. Elfogadható értékek: [-_A-Za-z0-9]*.
connection
Karakterlánc. Kötelező.
A kapcsolat neve. Offline webhook esetén ez lesz a Bejövő webhook típusa, ellenkező esetben ez lesz a webhook bővítmény típusa.
type
Karakterlánc.
A webhook bővítmény neve. Hagyja üresen, ha offline webhookról van szó.
filters
resources.webhooks.webhook.filters.
Eseményindító-szűrők listája.
Példák
Egyszerű példa
A folyamatot az alábbiak szerint határozhatja meg.
resources:
webhooks:
- webhook: WebHook
connection: IncomingWH
steps:
- script: echo ${{ parameters.WebHook.resource.message.title }}
A folyamat webhook használatával történő aktiválásához kérelmet kell küldenie POST
a következőnek: https://dev.azure.com/<org_name>/_apis/public/distributedtask/webhooks/<webhook_connection_name>?api-version=6.0-preview
. Ez a végpont nyilvánosan elérhető, és nincs szükség engedélyezésre. A kérelemnek a következő szövegtörzset kell tartalmaznia.
{
"resource": {
"message": {
"title": "Hello, world!",
"subtitle": "I'm using WebHooks!"
}
}
}
Amikor a webhook kéréstörzséből fér hozzá adatokhoz, vegye figyelembe, hogy az helytelen YAML-hez vezethet. Ha például az előző folyamatban a lépés a következőt olvassa fel - script: echo ${{ parameters.WebHook.resource.message }}
: , és webhookon keresztül aktiválja a folyamatot, a folyamat nem fut. Ennek az az oka, hogy a következő JSON-t tartalmazó értékre message
való lecserélés ${{ parameters.WebHook.resource.message.title }}
során a létrehozott YAML érvénytelenné válik.
{
"title": "Hello, world!",
"subtitle": "I'm using WebHooks!"
}
Mivel a létrehozott YAML érvénytelenné válik, egyetlen folyamatfuttatás sem lesz várólistán válaszként.
Jogosulatlan folyamatfuttatások megakadályozása
A webhookok lehetővé teszik, hogy bárki elindítsa a folyamatot, ha ismeri a szervezet nevét és a webhook-szolgáltatáskapcsolatot.
A bejövő webhook-szolgáltatáskapcsolat létrehozásakor titkos kód definiálásával megakadályozhatja a jogosulatlan folyamatfuttatásokat. Meg kell adnia annak a HTTP-fejlécnek a nevét is, amely a webhook törzsének SHA-1 ellenőrzőösszegét tartalmazza.
Annak ellenőrzéséhez, hogy egy bejövő webhook REST API-hívása engedélyezve van-e, az Azure Pipelines a titkos kulcs használatával kiszámítja a kérelem törzsének SHA-1 ellenőrzőösszegét. Ezután összehasonlítja a kérelem fejlécében átadott ellenőrzőösszegmel. Így a hívó bizonyítja, hogy ismerik a titkot.
Lássunk erre egy példát. Tegyük fel, hogy konfigurált egy bejövő webhook-szolgáltatáskapcsolatot nevű IncomingWH
néven, a titkos kód secret
megadása után az ellenőrzőösszeget a nevű HTTP-fejlécben X-WH-Checksum
küldi el a rendszer. Tegyük fel, hogy egy webhook-erőforrást definiáló folyamattal rendelkezik.
Tegyük fel, hogy a következő kérelemtörzs használatával szeretné elindítani a folyamatot:
{"resource":{"message":{"title":"Hello, world!","subtitle":"I'm using WebHooks!"}}}
Ehhez kérést POST
kell küldenie a fájlhoz https://dev.azure.com/<org_name>/_apis/public/distributedtask/webhooks/IncomingWH?api-version=6.0-preview
, és hozzá kell adnia a X-WH-Checksum
fejlécet a következő 750D33212D3AD4932CC390819050734831A0A94F
értékkel: . Nem kell megadnia felhasználónevet & jelszót vagy bármilyen más hitelesítési információt.
Az Azure Pipelines egymástól függetlenül kiszámítja a törzs SHA-1 ellenőrzőösszegét kulcsként használva secret
, és ugyanazt 750D33212D3AD4932CC390819050734831A0A94F
az értéket hozza létre. Mivel az értékek egyeznek, a hívás engedélyezve van, és a folyamat várólistára helyezése folytatódik.
A fejléc értékét X-WH-Checksum
pszeudokódként SHA1(secret).ComputeHash(requestBody)
számítja ki. A parancsot használhatja. A NET osztálya System.Security.Cryptography.HMACSHA1
erre a célra.
Az új vonalak vagy térközök miatti érvényesítési hibák elkerülése érdekében javasoljuk, hogy a törzset kis méretű formában küldje el. Vagyis küldje el a
{"resource":{"message":{"title":"Hello, world!","subtitle":"I'm using WebHooks!"}}}
ahelyett, hogy
{
"resource": {
"message": {
"title": "Hello, world!",
"subtitle": "I'm using WebHooks!"
}
}
}
Annak ellenére, hogy a fenti két JSON-objektum ugyanazt az objektumot képviseli, különböző SHA-1 ellenőrzőösszegeket hoznak létre. Ennek az az oka, hogy az SHA-1 a sztringábrázoláson van kiszámítva, ami eltér.