resources.webhooks.web kancası tanımı
Web kancası kaynağı, iş akışını otomatikleştirmek için işlem hattınızı bir dış hizmetle tümleştirmenize olanak tanır.
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.web kancaları
Özellikler
webhook
Dize. İlk özellik olarak gereklidir.
Web kancasının adı. Kabul edilebilir değerler: [-_A-Za-z0-9]*.
connection
Dize. Gereklidir.
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 listesi.
Ö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_connection_name>?api-version=6.0-preview
bulunmanız gerekir. 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ştiğinde, yanlış YAML'ye yol açabileceğine dikkat edin. Örneğin, önceki işlem hattında adımınız değerini 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ı bilen herkesin işlem hattınızı tetiklesine izin verir.
Gelen Web Kancası hizmeti 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 web kancası REST API çağrısının yetkilendirildiğini doğrulamak için Azure Pipelines, anahtar olarak gizli dizisini 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, sırrı bildiğini kanıtlar.
Bir örneğe göz atalım. adlı IncomingWH
bir Gelen Web Kancası hizmeti bağlantısı yapılandırdığınıza göre gizli dizi olarak secret
belirtildi ve sağlama toplamı adlı X-WH-Checksum
HTTP üst bilgisinde gönderildi. 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 adresine bir POST
istekte https://dev.azure.com/<org_name>/_apis/public/distributedtask/webhooks/IncomingWH?api-version=6.0-preview
bulunmanız ve değerini 750D33212D3AD4932CC390819050734831A0A94F
içeren X-WH-Checksum
üst bilgiyi eklemeniz gerekir. Kullanıcı adı & parola veya başka bir kimlik doğrulama bilgisi 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çla 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 bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin