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ó.

filtersresources.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 messagevaló 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ű IncomingWHnéven, a titkos kód secretmegadása után az ellenőrzőösszeget a nevű HTTP-fejlécben X-WH-Checksumkü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.

Lásd még