Bagikan melalui


Model kontribusi

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

Ekstensi menambahkan kemampuan baru ke dalam sistem dengan memberikan kontribusi dan dengan menentukan cara agar ekstensi lain dapat tersambung ke ekstensi tersebut. Jenis kontribusi mendefinisikan sesuatu yang dapat ditambahkan ke sistem. Kontribusi adalah instans tertentu dari jenis kontribusi. Misalnya, hub adalah jenis kontribusi yang ditentukan oleh ekstensi inti yang disediakan Microsoft. Hub Explorer di bawah grup Hub build adalah kontribusi tertentu dari jenis hub.

Untuk mengetahui informasi selengkapnya, lihat referensi berikut ini:

Jenis kontribusi

Jenis kontribusi mendefinisikan kontrak yang harus dipatuhi semua kontribusi ke sistem jenis tersebut. Jenis kontribusi juga dapat diperluas dari jenis kontribusi lain. Contoh jenis kontribusi berikut menentukan properti yang ditetapkan oleh instans jenis tersebut:

  • hub
  • action
  • build-task

Setiap definisi properti menentukan aspek-aspek berikut:

  • Jenis properti, misalnya string, boolean, dan sebagainya.
  • Apakah properti diperlukan
  • Nilai default, jika tidak ditentukan oleh kontribusi (opsional).

Contoh

Berikut adalah contoh deklarasi jenis kontribusi dalam manifes ekstensi:

{
    ...
    "contributionTypes": [
        {
            "id": "hub",
            "name": "Web Access Hub",
            "description": "A hub that appears in the hubs menu at the top of web pages.",
            "properties": {
                "name": {
                    "description": "The text to display for the hub",
                    "type": "string",
                    "required": true
                },
                "uri": {
                    "description": "URI of the contents of the hub page",
                    "type": "string",
                    "required": true
                },
                "order": {
                    "description": "An optional ordering value which can indicate in which position to place the hub within the hub group",
                    "type": "integer"
                }
				...
            }
        }
    ]
}

Kontribusi

Kontribusi adalah instans jenis kontribusi. Misalnya, Queries hub di bawah grup Hub kerja adalah kontribusi jenis hub dan Publish Test Results tugas build adalah kontribusi jenis build-task.

Semua kontribusi harus menentukan jenis dan menentukan nilai untuk properti apa pun yang diperlukan oleh jenis kontribusi tersebut.

Contoh

Berikut adalah contoh deklarasi kontribusi hub dalam manifes ekstensi:

{
    "contributions": [
        {
            "id": "build-explorer-hub",
            "type": "ms.vss-web.hub",
            "targets": [
                ".build-hub-group"
            ],
            "properties": {
                "name": "Explorer",
                "uri": "/_build",
                "order": 22
            }
        }
    ]
}

Kontribusi target

Kontribusi dapat menargetkan satu atau beberapa kontribusi lainnya, yang menciptakan hubungan antara kontribusi dan masing-masing targetnya. Sistem dapat menemukan kontribusi untuk target pada runtime. Misalnya, hub kontribusi (Explorer) mungkin menargetkan kontribusi tertentu hub-group (Build).

{
    "id": "build-explorer-hub",
    "type": "ms.vss-web.hub",
    "targets": [
        ".build-hub-group"
    ]
}

Saat grup hub merender, sistem dapat mengkueri semua kontribusi hub yang menargetkan grup hub untuk mengetahui hub mana yang akan dirender.

Mengidentifikasi kontribusi dan jenis

Setiap jenis kontribusi dan kontribusi harus memiliki ID unik dalam ekstensi tempatnya dideklarasikan.

Pengidentifikasi kontribusi lengkap mencakup item berikut, yang Anda pisahkan dengan titik . :

  • ID Penerbit
  • ID ekstensi
  • ID Kontribusi/jenis

Misalnya: ms.vss-web.hub adalah pengidentifikasi lengkap untuk kontribusi berikut:

  • ID Penerbit: ms
  • ID Ekstensi: vss-web
  • ID Kontribusi/jenis: hub

Anda dapat menggunakan referensi kontribusi relatif dalam manifes ekstensi untuk referensi kontribusi ke jenis kontribusi atau kontribusi lain dalam ekstensi yang sama. Dalam hal ini, penerbit dan ID ekstensi tidak disertakan, dan ID adalah titik . yang diikuti oleh ID kontribusi. Misalnya, .hub dapat digunakan dalam ekstensi yang vss-web disebutkan sebelumnya sebagai pintasan untuk ms.vss-web.hub.