Bagikan melalui


Buat konsumen khusus untuk pengait layanan

Layanan Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022

Gunakan kait layanan untuk memberi tahu sistem non-Microsoft tentang peristiwa yang terjadi di proyek Anda. Konsumen kustom mengirim pesan HTTP ke titik akhir yang ditentukan dalam manifes ekstensi Anda.

Petunjuk / Saran

Jika Anda memulai ekstensi Azure DevOps baru, coba koleksi sampel yang dikelola ini terlebih dahulu—mereka bekerja dengan build produk saat ini dan mencakup skenario modern (misalnya, menambahkan tab pada halaman permintaan pull).

Jika sampel tidak berfungsi di organisasi Anda, instal ke organisasi pribadi atau pengujian dan bandingkan ID target manifes ekstensi dan versi API dengan dokumen saat ini. Untuk referensi dan API, lihat:

Artikel ini membahas pengembangan ekstensi yang mengimplementasikan contoh layanan konsumen, yang mencakup peristiwa dan tindakan berikut.

  • Peristiwa yang didukung yang memicu tindakan berikut:
    • Kode didorong
    • Permintaan pull dibuat
    • Permintaan pull diperbarui
  • Tindakan yang didukung untuk diambil saat peristiwa terjadi:
    • Mengirim pesan HTTP

Nota

Artikel ini mengacu pada direktori home untuk proyek Anda sebagai home.

Diagram yang menunjukkan contoh layanan konsumen yang mengirim pesan HTTP untuk kejadian push kode dan permintaan pull.

Untuk informasi selengkapnya, lihat Contoh ekstensi repositori GitHub. Untuk daftar semua peristiwa yang didukung yang dapat Anda gunakan sebagai pemicu untuk ekstensi konsumen kustom Anda, lihat Daftar jenis peristiwa.

Petunjuk / Saran

Lihat dokumentasi terbaru kami tentang pengembangan ekstensi menggunakan Azure DevOps Extension SDK.

Cara Kerja Pengait Layanan

Hook layanan penerbit menentukan serangkaian kejadian. Langganan mendengarkan event dan menentukan tindakan yang berjalan ketika event memicu.

Diagram yang menunjukkan alur service hook: penerbit menghasilkan peristiwa, langganan mencocokkan peristiwa, dan tindakan dijalankan saat peristiwa cocok dengan langganan.

Diagram ini menunjukkan alur hook layanan umum: penerbit memancarkan peristiwa, langganan cocok dengan peristiwa, dan tindakan yang dijalankan saat kecocokan terjadi. Dalam contoh artikel ini, ekstensi mengimplementasikan pengguna. Ketika peristiwa yang didukung terjadi, tindakan konsumen yang dikonfigurasi mengirimkan pesan HTTP ke titik akhir yang Anda tentukan dalam manifes ekstensi.

Membuat ekstensi

  1. Lihat cara membuat ekstensi Anda dari awal.

  2. Tambahkan kontribusi khusus untuk implementasi konsumen kustom ke file manifes dasar Anda. Lihat contoh berikut tentang bagaimana manifes Anda akan terlihat setelah Anda menambahkan kontribusi.

{
    "manifestVersion": 1,
    "id": "samples-service-hooks-consumer",
    "version": "0.1.2",
    "name": "Service Hooks Sample",
    "description": "A simple extension that demonstrates how to contribute a consumer service into service hooks.",
    "publisher": "fabrikam",
    "public": false,
    "icons": {
        "default": "images/logo.png"
    },
    "scopes": [],
    "files": [
        {
            "path": "images",
            "addressable": true
        }
    ],
    "content": {
        "details": {
            "path": "readme.md"
        }
    },
    "categories": [
        "Developer samples"
    ],
    "targets": [
        {
            "id": "Microsoft.VisualStudio.Services"
        }
    ],
    "contributions": [
        {
            "id": "consumer",
            "type": "ms.vss-servicehooks.consumer",
            "targets": [
                "ms.vss-servicehooks.consumers"
            ],
            "properties": {
                "id": "consumer",
                "name": "Sample Consumer",
                "description": "Sample consumer service",
                "informationUrl": "https://aka.ms/vsoextensions",
                "inputDescriptors": [
                    {
                        "id": "url",
                        "isRequired": true,
                        "name": "URL",
                        "description": "URL to post event payload to",
                        "inputMode": "textbox"
                    }
                ],
                "actions": [
                    {
                        "id": "performAction",
                        "name": "Perform action",
                        "description": "Posts a standard event payload",
                        "supportedEventTypes": [
                            "git.push",
                            "git.pullrequest.created",
                            "git.pullrequest.updated"
                        ],
                        "publishEvent": {
                            "url": "{{{url}}}",
                            "resourceDetailsToSend": "all",
                            "messagesToSend": "all",
                            "detailedMessagesToSend": "all"
                        }
                    }
                ]
            }
        }
    ]
}

Nota

Ingat untuk memperbarui properti publisher.

Untuk setiap kontribusi dalam ekstensi Anda, manifes menentukan item berikut.

  • Jenis kontribusi - layanan konsumen (ms.vss-servicehooks.consumer) dalam hal ini.
  • Target kontribusi - layanan konsumen (ms.vss-servicehooks.consumers) dalam hal ini.
  • Properti-properti yang khusus untuk setiap jenis kontribusi.

Konsumen memiliki properti berikut.

Harta benda Deskripsi
id ID unik untuk layanan konsumen Anda.
Nama Nama konsumen khusus, yang terlihat selama pembuatan langganan webhook layanan.
deskripsi Menjelaskan layanan konsumen Anda.
URL informasi Temukan informasi selengkapnya tentang ekstensi Anda.
deskriptor masukan Input yang akan digunakan oleh pengguna yang membuat langganan dengan layanan konsumen.
Tindakan Menjelaskan tindakan yang harus diambil dan peristiwa mana yang memicu tindakan tersebut.

Tindakan untuk konsumen Anda memiliki karakteristik berikut:

Harta benda Deskripsi
id ID untuk layanan tindakan Anda.
Nama Nama tindakan.
deskripsi Deskripsi terperinci tentang tindakan tersebut.
tipeAcaraYangDidukung Susunan jenis pemicu untuk mana tindakan ini dapat digunakan. Untuk informasi selengkapnya, lihat Daftar jenis peristiwa.
publishEvent.url URL titik akhir yang menerima pesan HTTP. Anda dapat membuat templat nilai ini dengan token dari inputDescriptors; pengguna memberikan nilai aktual saat mereka membuat langganan.
  1. Sebarkan ekstensi Anda ke organisasi Azure DevOps Anda dan uji.

Langkah berikutnya