Aracılığıyla paylaş


resources.webhooks.webhook tanımı

Web kancası kaynağı, iş akışını otomatikleştirmek için işlem hattınızı bir dış hizmetle tümleştirmenizi sağlar.

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.

Bu tanıma başvuran tanımlar: resources.webhooks

Özellikler

webhook dize. İlk özellik olarak gereklidir.
Web kancasının adı. Kabul edilebilir değerler: [-_A-Za-z0-9]*. Azure DevOps web kancası için her webhook zaman bir WebHookolmalıdır.

connection dize. Gerekli.
Bağlantının adı. Çevrimdışı web kancası söz konusu olduğunda bu, Gelen Web Kancası türü olur, aksi takdirde web kancası uzantısının türü olur.

type dize.
Web kancası uzantısının adı. Çevrimdışı bir web kancasıysa bunu boş bırakın.

filters resources.webhooks.webhook.filters.
tetikleyici filtreleri listesini .

Örnekler

Temel örnek

İşlem hattınızı aşağıdaki gibi tanımlayabilirsiniz.

resources:
  webhooks:
    - webhook: WebHook
      connection: IncomingWH

steps:  
- script: echo ${{ parameters.WebHook.resource.message.title }}

web kancasını kullanarak işlem hattınızı tetiklemeniz için adresine bir POST istekte https://dev.azure.com/<org_name>/_apis/public/distributedtask/webhooks/<WebHook Name>?api-version=6.0-previewbulunmanız gerekir. Web Kancası Adı, Gelen Web Kancası Hizmet Bağlantısı ile eşleşmelidir. Bu uç nokta genel kullanıma açıktır ve yetkilendirme gerekmez. İstek aşağıdaki gövdeye sahip olmalıdır.

{
    "resource": {
        "message": {
            "title": "Hello, world!",
            "subtitle": "I'm using WebHooks!"
        }
    }
}

Web kancasının istek gövdesinden verilere erişirken, yanlış YAML'ye yol açabileceğine dikkat edin. Örneğin, önceki işlem hattında adımınız öğesini okursa - script: echo ${{ parameters.WebHook.resource.message }}ve işlem hattını bir web kancası aracılığıyla tetiklerseniz işlem hattı çalışmaz. Bunun nedeni, aşağıdaki JSON'yi içeren ile messagedeğiştirme ${{ parameters.WebHook.resource.message.title }} işleminde oluşturulan YAML'nin geçersiz hale gelmesidir.

{
  "title": "Hello, world!",
  "subtitle": "I'm using WebHooks!"
}

Oluşturulan YAML geçersiz hale geldiğinden, yanıt olarak hiçbir işlem hattı çalıştırması kuyruğa alınmaz.

Yetkisiz işlem hattı çalıştırmalarını önleme

Web kancaları, kuruluşunuzun ve web kancası hizmet bağlantınızın adlarını bildikleri sürece herkesin işlem hattınızı tetiklesine olanak tanır.

Gelen Web Kancası hizmet bağlantısı oluştururken gizli dizi tanımlayarak yetkisiz işlem hattı çalıştırmalarını önleyebilirsiniz. Web kancasının gövdesinin SHA-1 sağlama toplamını içeren HTTP üst bilgisinin adını da belirtmeniz gerekir.

Gelen bir web kancası REST API çağrısının yetkilendirildiğini doğrulamak için Azure Pipelines, gizli diziyi anahtar olarak kullanarak isteğin gövdesinin SHA-1 sağlama toplamını hesaplar. Ardından bunu istek üst bilgisinde geçirilen sağlama toplamıyla karşılaştırır. Böylece arayan kişi sırrı bildiğini kanıtlıyor.

Bir örneğe bakalım. adlı IncomingWHbir Gelen Web Kancası hizmet bağlantısı yapılandırdığınıza göre gizli dizi olarak secretbelirtilir ve sağlama toplamı adlı X-WH-ChecksumHTTP üst bilgisinde gönderilir. Web kancası kaynağını tanımlayan bir işlem hattınız olduğunu düşünün.

aşağıdaki istek gövdesini kullanarak işlem hattını tetiklemek istediğinizi varsayalım:

{"resource":{"message":{"title":"Hello, world!","subtitle":"I'm using WebHooks!"}}}

Bunu yapmak için öğesine bir POST istekte https://dev.azure.com/<org_name>/_apis/public/distributedtask/webhooks/IncomingWH?api-version=6.0-preview bulunmanız ve üst bilgiyi değeriyle 750D33212D3AD4932CC390819050734831A0A94Feklemeniz X-WH-Checksum gerekir. Herhangi bir kullanıcı adı ve parola veya başka bir kimlik doğrulama bilgisi türü belirtmeniz gerekmez.

Azure Pipelines, anahtar olarak kullanarak secret gövdenin SHA-1 sağlama toplamını bağımsız olarak hesaplar ve aynı 750D33212D3AD4932CC390819050734831A0A94F değeri oluşturur. Değerler eşleştiğinden çağrı yetkilendirilmiştir ve işlem hattı kuyruğa alma işlemi devam eder.

Üst bilginin değerini X-WH-Checksum sözde kod SHA1(secret).ComputeHash(requestBody)olarak hesaplarsınız. kullanabilirsiniz. Bu amaç için NET sınıfı System.Security.Cryptography.HMACSHA1 .

Yeni satırlar veya boşluklar nedeniyle doğrulama hatalarını önlemek için gövdeyi simge durumuna küçültülmüş bir biçimde göndermenizi öneririz. Yani, gönder

{"resource":{"message":{"title":"Hello, world!","subtitle":"I'm using WebHooks!"}}}

Onun yerine

{
    "resource": {
        "message": {
            "title": "Hello, world!",
            "subtitle": "I'm using WebHooks!"
        }
    }
}

Yukarıdaki iki JSON nesnesi aynı nesneyi temsil etse de, farklı SHA-1 sağlama toplamları oluşturur. Bunun nedeni SHA-1'in farklı olan dize gösteriminde hesaplanmış olmasıdır.

Ayrıca bakınız