Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A webhook-erőforrásokkal integrálhatja a folyamatot egy külső szolgáltatással 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
sztring. Első tulajdonságként kötelező megadni.
A webhook neve. Elfogadható értékek: [-_A-Za-z0-9]*.
Az Azure DevOps webhook webhook
esetében mindig egy WebHook
.
connection
sztring. Szükséges.
kapcsolat neve. Offline webhook esetén ez a Bejövő webhook típusa, ellenkező esetben a webhook bővítmény típusa lesz.
type
sztring.
A webhook bővítmény neve. Hagyja üresen, ha offline webhookról van szó.
filters
resources.webhooks.webhook.filters.
triggerszű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őre https://dev.azure.com/<org_name>/_apis/public/distributedtask/webhooks/<WebHook Name>?api-version=6.0-preview
: .
A WebHook nevének meg kell egyeznie a bejövő WebHook szolgáltatáskapcsolat nevével.
Ez a végpont nyilvánosan elérhető, és nincs szükség engedélyezésre. A kérelemnek a következő tö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á az adatokhoz, vegye figyelembe, hogy az helytelen YAML-hez vezethet. Ha például az előző folyamatban a lépés felolvassa - 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ó helyére való lecserélés ${{ parameters.WebHook.resource.message.title }}
message
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, a rendszer nem vár várólistára egy folyamatfuttatást sem válaszként.
Jogosulatlan folyamatfuttatások megakadályozása
A webhookok lehetővé teszik, hogy bárki elindítsa a folyamatot, feltéve, hogy ismeri a szervezet nevét és a webhook szolgáltatáskapcsolatát.
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 tartalmazza a webhook törzsének SHA-1 ellenőrzőösszegét.
Annak ellenőrzéséhez, hogy a bejövő webhook REST API-hívása engedélyezett-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 egy példát. Tegyük fel, hogy konfigurálta a Bejövő webhook szolgáltatáskapcsolatot, IncomingWH
megadta a titkos kulcsot secret
, és hogy az ellenőrzőösszeget a rendszer a http-fejlécben X-WH-Checksum
küldi el. Tegyük fel, hogy rendelkezik egy webhook-erőforrást meghatározó folyamattal.
Tegyük fel, hogy a következő kérelemtörzs használatával szeretné aktiválni a folyamatot:
{"resource":{"message":{"title":"Hello, world!","subtitle":"I'm using WebHooks!"}}}
Ehhez kérést POST
kell küldenie a fejléchez 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 és jelszót, sem más típusú 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élyezett, és a folyamat várólistára helyezése folytatódik.
A fejléc értékét X-WH-Checksum
pszeudokódként számítja ki.SHA1(secret).ComputeHash(requestBody)
Használhatja a . A NET osztálya System.Security.Cryptography.HMACSHA1
erre a célra.
Az új vonalak vagy szókö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 más.