Bagikan melalui


Model Kontribusi

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

Ekstensi menambahkan kemampuan ke Azure DevOps dengan mendeklarasikan jenis kontribusi dan instans kontribusi. Jenis kontribusi mendefinisikan kontrak (properti dan perilaku) yang harus diterapkan kontribusi jenis tersebut. Kontribusi adalah instans konkret dari jenis kontribusi: hub atau tugas pembangunan.

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:

Untuk informasi selengkapnya, lihat:

  • titik Ekstensibilitas
  • azure-devops-extension-api
  • azure-devops-extension-sdk

Jenis kontribusi

Jenis kontribusi menentukan properti dan aturan yang harus diikuti oleh kontribusi jenis tersebut. Jenis kontribusi dapat mengembangkan jenis kontribusi lain, mewarisi atributnya.

Jenis kontribusi umum meliputi:

  • hub
  • action
  • build-task

Setiap definisi properti meliputi:

  • jenis properti (misalnya, string atau boolean)
  • apakah properti diperlukan
  • nilai default opsional

Contoh

Deklarasi jenis kontribusi dalam manifes terlihat seperti ini:

{
  "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": "Optional ordering value indicating the hub's position within the hub group",
          "type": "integer"
        }
      }
    }
  ]
}

Kontribusi

Kontribusi adalah contoh dari jenis kontribusi. Misalnya, hub Queries di bawah grup Hub kerja adalah kontribusi jenis hub dan tugas build Publish Test Results 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
            }
        }
    ]
}

Target kontribusi

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

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

Saat grup hub ditampilkan, sistem dapat mengkueri kontribusi dari semua hub yang menargetkan grup hub untuk mengetahui hub mana yang harus ditampilkan.

Mengidentifikasi kontribusi dan jenis

Setiap kontribusi dan jenis kontribusi harus memiliki ID unik dalam ekstensi di mana ia 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 merujuk pada kontribusi lain atau jenis kontribusi lainnya dalam ekstensi yang sama. Dalam hal ini, penerbit dan ID ekstensi tidak disertakan, dan ID adalah titik . diikuti oleh ID kontribusi. Misalnya, .hub dapat digunakan dalam ekstensi vss-web yang disebutkan sebelumnya sebagai pintasan untuk ms.vss-web.hub.