Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 WebHook
olmalı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-preview
bulunmanı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 message
değ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ı IncomingWH
bir Gelen Web Kancası hizmet bağlantısı yapılandırdığınıza göre gizli dizi olarak secret
belirtilir ve sağlama toplamı adlı X-WH-Checksum
HTTP ü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 750D33212D3AD4932CC390819050734831A0A94F
eklemeniz 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.