Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Sumber daya webhook memungkinkan Anda mengintegrasikan alur Anda dengan layanan eksternal untuk mengotomatiskan alur kerja.
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.
Definisi yang mereferensikan definisi ini: resources.webhooks
Karakteristik
webhook
tali. Diperlukan sebagai properti pertama.
Nama webhook. Nilai yang dapat diterima: [-_A-Za-z0-9]*.
Untuk webhook Azure DevOps, webhook
harus selalu menjadi WebHook
.
connection
tali. Dibutuhkan.
Nama koneksi. Dalam kasus webhook offline, ini akan menjadi jenis Webhook Masuk jika tidak, itu akan menjadi jenis ekstensi webhook.
type
tali.
Nama ekstensi webhook. Biarkan kosong ini jika webhook offline.
filters
resources.webhooks.webhook.filters.
Daftar filter pemicu.
Contoh
Contoh dasar
Anda dapat menentukan alur Anda sebagai berikut.
resources:
webhooks:
- webhook: WebHook
connection: IncomingWH
steps:
- script: echo ${{ parameters.WebHook.resource.message.title }}
Untuk memicu alur Anda menggunakan webhook, Anda perlu membuat POST
permintaan ke https://dev.azure.com/<org_name>/_apis/public/distributedtask/webhooks/<WebHook Name>?api-version=6.0-preview
.
Nama WebHook harus cocok dengan Koneksi Layanan WebHook Masuk.
Titik akhir ini tersedia untuk umum, dan tidak diperlukan otorisasi. Permintaan harus memiliki isi berikut.
{
"resource": {
"message": {
"title": "Hello, world!",
"subtitle": "I'm using WebHooks!"
}
}
}
Saat Anda mengakses data dari isi permintaan webhook, perhatikan bahwa itu dapat menyebabkan YAML yang salah. Misalnya, jika di alur sebelumnya, langkah Anda membaca - script: echo ${{ parameters.WebHook.resource.message }}
, dan Anda memicu alur melalui webhook, alur tidak berjalan. Ini karena dalam proses mengganti ${{ parameters.WebHook.resource.message.title }}
dengan message
, yang berisi JSON berikut, YAML yang dihasilkan menjadi tidak valid.
{
"title": "Hello, world!",
"subtitle": "I'm using WebHooks!"
}
Karena YAML yang dihasilkan menjadi tidak valid, tidak ada eksekusi alur yang diantrekan sebagai respons.
Mencegah eksekusi alur yang tidak sah
Webhook memungkinkan siapa pun memicu alur Anda, selama mereka mengetahui nama organisasi dan koneksi layanan webhook Anda.
Anda dapat mencegah eksekusi alur yang tidak sah dengan menentukan rahasia saat membuat koneksi layanan Webhook Masuk. Anda juga perlu menentukan nama header HTTP yang berisi checksum SHA-1 dari isi webhook.
Untuk memverifikasi bahwa panggilan REST API webhook masuk diotorisasi, Azure Pipelines menghitung checksum SHA-1 dari isi permintaan menggunakan rahasia sebagai kunci. Kemudian membandingkannya dengan checksum yang diteruskan di header permintaan. Dengan cara ini, penelepon membuktikan mereka tahu rahasianya.
Mari kita lihat contohnya. Katakanlah Anda mengonfigurasi koneksi layanan Webhook Masuk bernama IncomingWH
, yang ditentukan rahasianya adalah secret
, dan bahwa checksum dikirim di header HTTP bernama X-WH-Checksum
. Bayangkan Anda memiliki alur yang mendefinisikan sumber daya Webhook.
Katakanlah Anda ingin memicu alur menggunakan isi permintaan berikut:
{"resource":{"message":{"title":"Hello, world!","subtitle":"I'm using WebHooks!"}}}
Untuk melakukan ini, Anda perlu membuat POST
permintaan ke https://dev.azure.com/<org_name>/_apis/public/distributedtask/webhooks/IncomingWH?api-version=6.0-preview
dan menambahkan X-WH-Checksum
header dengan nilai 750D33212D3AD4932CC390819050734831A0A94F
. Anda tidak perlu menentukan nama pengguna & kata sandi atau jenis informasi autentikasi lainnya.
Azure Pipelines akan secara independen menghitung checksum SHA-1 isi menggunakan secret
sebagai kunci dan akan menghasilkan nilai yang sama 750D33212D3AD4932CC390819050734831A0A94F
. Karena nilai cocok, panggilan diotorisasi, dan antrean alur berlanjut.
Anda menghitung nilai X-WH-Checksum
header, dalam pseudocode, sebagai SHA1(secret).ComputeHash(requestBody)
. Anda dapat menggunakan . System.Security.Cryptography.HMACSHA1
Kelas NET untuk tujuan ini.
Untuk mencegah kegagalan validasi karena baris atau spasi kosong baru, kami sarankan Anda mengirim isi dalam bentuk yang diminimalkan. Artinya, kirim
{"resource":{"message":{"title":"Hello, world!","subtitle":"I'm using WebHooks!"}}}
Melainkan
{
"resource": {
"message": {
"title": "Hello, world!",
"subtitle": "I'm using WebHooks!"
}
}
}
Meskipun dua objek JSON di atas mewakili objek yang sama, objek tersebut menghasilkan checksum SHA-1 yang berbeda. Ini karena SHA-1 dihitung pada representasi string mereka, yang berbeda.