Bagikan melalui


Webhook

Layanan Azure DevOps | Azure DevOps Server 2022 - Azure DevOps Server 2019

Artikel ini menjelaskan webhook dan cara menyiapkannya untuk proyek Azure DevOps Anda. Webhook menyediakan cara untuk mengirim representasi JSON dari peristiwa Azure DevOps ke layanan apa pun yang memiliki titik akhir publik.

Catatan

Azure DevOps tidak mengenakan biaya untuk menyiapkan kait layanan atau mengintegrasikan dengan layanan eksternal. Lihat situs layanan tertentu untuk harga yang terkait dengan layanan mereka.

Prasyarat

Anda memerlukan prasyarat berikut untuk mengelola webhook untuk organisasi Azure DevOps:

  • Peran Pemilik atau Administrator Koleksi Proyek dalam organisasi.

  • Proyek di organisasi, dan layanan dengan titik akhir HTTP atau HTTPS publik yang ingin Anda kirimi peristiwa Azure DevOps.

    Penting

    Disarankan untuk hanya menggunakan titik akhir HTTPS. HTTP berpotensi mengirim data privat, termasuk header autentikasi, yang tidak terenkripsi dalam payload peristiwa. Anda harus menggunakan HTTPS untuk autentikasi dasar pada webhook.

Mengirim representasi JSON ke layanan

  1. Di proyek Azure DevOps Anda, buka Pengaturan>proyek Pengait layanan di .https://<organization-name>/<project-name>/_settings/serviceHooks

    Cuplikan layar pilihan Hook layanan di pengaturan Proyek.

  2. Pada halaman Service Hooks , pilih + ikon atau Buat langganan.

    Cuplikan layar memilih Buat langganan di halaman Service Hooks.

  3. Pada layar Layanan, pilih Web Hook, lalu pilih Berikutnya.

    Cuplikan layar memilih Web Hook di halaman Layanan.

  4. Pada layar Pemicu, pilih dan konfigurasikan peristiwa Azure DevOps yang ingin Anda picu webhooknya, lalu pilih Berikutnya. Untuk informasi selengkapnya tentang payload JSON yang diposting oleh konsumen Azure DevOps, lihat Peristiwa pengait layanan.

    Cuplikan layar memilih dan mengonfigurasi peristiwa pemicu.

  5. Pada layar Tindakan, konfigurasikan URL target dan apa yang harus dilakukan saat peristiwa terjadi. Untuk informasi selengkapnya tentang apa yang harus dimasukkan dalam Detail sumber daya untuk dikirim, Pesan untuk dikirim, dan Pesan terperinci untuk dikirim, lihat Detail sumber daya yang akan dikirim.

    Catatan

    Webhook tidak dapat menargetkan localhost (loopback) atau rentang khusus alamat IPv4/IPv6.

  6. Pilih Uji untuk menguji langganan hook layanan.

    Cuplikan layar mengonfigurasi kotak dialog Tindakan.

  7. Saat pengujian berhasil diselesaikan, tutup layar pemberitahuan, lalu pilih Selesai di layar Tindakan .

    Cuplikan layar hasil pengujian untuk langganan hook layanan

  8. Sekarang webhook disiapkan. Buka layanan target untuk melihat representasi JSON.

    Cuplikan layar menampilkan representasi JSON.

Tip

Anda juga dapat membuat webhook secara terprogram. Untuk informasi selengkapnya, lihat Membuat langganan hook layanan secara terprogram.

Detail sumber daya yang akan dikirim

Detail Sumber Daya yang akan dikirim, Pesan untuk dikirim, dan Pesan terperinci untuk mengirim pengaturan di panel Tindakan mengontrol ukuran payload JSON untuk dikirim. Detail sumber daya untuk mengirim kontrol berapa banyak sumber daya yang akan dikirim. Defaultnya adalah Semua, tetapi Anda juga dapat memilih untuk mengirim Minimal, yang hanya mengirim bidang kunci seperti URL dan ID, atau Tidak Ada.

Tidak Ada dan Minimal berguna dalam skenario di mana pemanggil tidak membutuhkan banyak atau informasi apa pun tentang sumber daya, karena bergantung pada pesan atau pesan terperinci itu sendiri. Tidak Ada dan Minimal juga berguna untuk alasan keamanan. Pemanggil harus memanggil kembali ke Azure DevOps Services dan melalui pemeriksaan keamanan dan izin normal untuk mendapatkan detail selengkapnya tentang sumber daya.

Contoh JSON berikut menunjukkan detail minimal tentang sumber daya:

   {
       "eventType": "git.push",
       ...
       "messages": {
           "text": "...",
           "html": "...",
           "markdown": "..."
       },
       "detailedMessage": {
           "text": "...",
           "html": "...",
           "markdown": "..."
       },
       "resource": {
           "id": "...",
           "url": "https://...",
           "name": "...",
           "field1:": "..."
       }
   }