Membuat titik akhir layanan

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

Titik akhir layanan adalah cara bagi Azure DevOps untuk terhubung ke sistem atau layanan eksternal. Ini adalah bundel properti yang disimpan dengan aman oleh Azure DevOps, yang mencakup tetapi tidak terbatas pada properti berikut:

  • Nama layanan
  • Deskripsi
  • URL Server
  • Sertifikat atau token
  • Nama pengguna dan kata sandi

Ekstensi kemudian dapat menggunakan titik akhir layanan untuk memperoleh detail tersimpan untuk melakukan operasi yang diperlukan pada layanan tersebut. Ikuti panduan ini untuk membuat kontribusi titik akhir layanan baru dan menggunakannya di ekstensi Anda.

Tip

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

Gambaran umum tugas

Anda dapat mengembangkan titik akhir layanan dengan membuat ekstensi contoh untuk Azure DevOps yang menyertakan item berikut:

  • Titik akhir layanan kustom dengan sumber data, yang memungkinkan tugas build atau widget dasbor untuk memanggil titik akhir REST pada layanan/server yang ditentukan oleh titik akhir.
  • Tugas build, yang menentukan dua properti: Titik akhir layanan & daftar pilih, yang memiliki nilai yang diisi dari sumber data titik akhir REST.

Catatan

Saat Anda membuat titik akhir layanan, titik akhir tersebut berada di tingkat proyek, bukan tingkat organisasi.

Langkah-langkah yang terlibat dalam menyelesaikan tugas ini adalah:

Catatan

Tutorial ini mengacu pada direktori beranda untuk proyek Anda sebagai "rumah".

Buat file manifes: vss-extension.json

File manifes menentukan titik akhir kustom dan tautan ke manifes task.json untuk tugas build.

Dalam artikel ini, pembuatan file manifes dipisahkan menjadi tiga bagian berikut:

Membuat file manifes dasar

Buat file json (vss-extension.json, misalnya) di home direktori ekstensi Anda.

{
"manifestVersion": 1,
  "id": "service-endpoint-tutorial",
  "version": "0.1.1",
  "name": "Sample extension that leverages a service endpoint",
  "description": "A sample Azure DevOps extension which shows how to create a custom endpoint and dynamic build task parameters taking value from a REST API.",
  "publisher": "francistotten",
  "targets": [
    {
      "id": "Microsoft.VisualStudio.Services"
    }
  ],  
  "files": [
    {
      "path": "BuildTaskFolder"
    }
  ]
}

Catatan

publisher Perbarui properti . BuildTaskFolder adalah jalur di mana kita pada akhirnya akan menempatkan alur tugas build kita.

Menambahkan kontribusi titik akhir kustom

Tambahkan array berikut contributions di bawah targets array konten manifes dasar.

Penting

Parameter koneksi layanan harus diambil oleh ID koneksi layanan.

  "contributions": [
    {
      "id": "service-endpoint",
      "description": "Service endpoint type for Fabrikam connections",
      "type": "ms.vss-endpoint.service-endpoint-type",
      "targets": [ "ms.vss-endpoint.endpoint-types" ],
      "properties": {
        "name": "fabrikam",
        "displayName": "Fabrikam server connection",
        "url": {
          "displayName": "Server Url",
          "helpText": "Url for the Fabrikam server to connect to."
        },
        "dataSources": [
          {
            "name": "Fabrikam Projects",
            "endpointUrl": "{{endpoint.url}}api/projects/index",
            "resultSelector": "jsonpath:$[*].nm"
          }

        ],
        "authenticationSchemes": [
          {
            "type": "ms.vss-endpoint.endpoint-auth-scheme-token"
          },
          {
            "type": "ms.vss-endpoint.endpoint-auth-scheme-basic",
            "inputDescriptors": [
              {
                "id": "username",
                "name": "Username",
                "description": "Username",
                "inputMode": "textbox",
                "validation": {
                  "isRequired": false,
                  "dataType": "string"
                }
              },
              {
                "id": "password",
                "name": "Password",
                "description": "Password",
                "inputMode": "passwordbox",
                "isConfidential": true,
                "validation": {
                  "isRequired": false,
                  "dataType": "string"
                }
              }
            ]
          }

        ],
        "helpMarkDown": "<a href=\"url-to-documentation\" target=\"_blank\"><b>Learn More</b></a>"
      }
    },
  ],

Jika Anda berhasil menambahkan kontribusi layanan, Anda akan melihat titik akhir Fabrikam saat mencoba menambahkan titik akhir layanan baru ke organisasi Anda.

Buat titik akhir layanan menggunakan titik akhir Fabrikam.

Cuplikan layar pengaturan titik akhir layanan.

Tip

Anda dapat menambahkan inputDescriptor tanpa authenticationSchemes. Untuk informasi selengkapnya, lihat Antarmuka InputDescriptor.

Menambahkan kontribusi tugas build

contributions Di dalam array dari langkah sebelumnya, tambahkan objek berikut ke akhir.

{
      "id": "build-task",
      "description": "Task with a dynamic property getting data from an endpoint REST data source",
      "type": "ms.vss-distributed-task.task",
      "targets": [ "ms.vss-distributed-task.tasks" ],
      "properties": {
        "name": "BuildTaskFolder"
      }
    }

URL titik akhir sumber data dihitung dari URL titik akhir atau URL tetap, dan beberapa nilai lainnya. Untuk tutorial ini, panggilan REST ini tidak mengembalikan apa pun dan dimaksudkan untuk digantikan oleh panggilan REST apa pun yang ingin Anda lakukan ke layanan Anda.

Dimungkinkan untuk menggunakan parameter lain daripada URL titik akhir untuk URL REST, misalnya beberapa properti titik akhir. Misalnya, dengan asumsi bahwa kami memiliki properti di titik akhir bernama subscriptionId, URL REST dapat menggunakannya dengan sintaks berikut: $(endpoint.subscription).

Membuat tugas build

File menjelaskan task.json tugas build Anda.

Buat task.json file di direktori Anda BuildTaskFolder , jika Anda belum membuat folder ini, lakukan sekarang.

{
  "id": "6557a6d2-4caf-4247-99ea-5131286a8753",
  "name": "build-task",
  "friendlyName": "Build Task that uses the service endpoint",
  "description": "Task with a dynamic property getting data from an endpoint REST data source",
  "author": "francistotten",
  "helpMarkDown": "Replace with Markdown to show in help",
  "category": "Build",
  "visibility": [
    "Build",
    "Release"
  ],
  "demands": [],
  "version": {
    "Major": "0",
    "Minor": "1",
    "Patch": "1"
  },
  "minimumAgentVersion": "1.95.0",
  "instanceNameFormat": "Service Endpoint Build Task $(project)",
  "inputs": [
    {
      "name": "FabrikamService",
      "type": "connectedService:Fabrikam",
      "label": "Fabrikam service/server end point",
      "defaultValue": "",
      "required": true,
      "helpMarkDown": "Select the Fabrikam end point to use. If needed,selecton 'manage', and add a new service endpoint of type 'Fabrikam server connection'"
    },
    {
      "name": "project",
      "type": "pickList",
      "label": "Fabrikam Project",
      "required": true,
      "helpMarkDown": "Select the name of the Fabrikam Project to analyze.",
      "properties": {
        "EditableOptions": "True"
      }
    }
  ],
  "dataSourceBindings": [
    {
      "target": "project",
      "endpointId": "$(FabrikamService)",
      "dataSourceName": "Fabrikam Projects"
    }
  ],
  "execution": {
    "Node": {
      "target": "sample.js",
      "argumentFormat": ""
    },
    "PowerShell3": {
      "target": "sample.ps1"
    }
  }
}

komponen task.json

Objek FabrikamService input

Bidang ini adalah bidang pertama dari jenis connectedService:Fabrikam.connectedService mengekspresikan bahwa bidang ini adalah jenis titik akhir, dan bahwa Fabrikam adalah nama objek.

Objek project input

Bidang ini adalah yang kedua. Ini daftar pilihan.

  • Bidang ini diisi oleh panggilan REST.
  • Nilai dari bidang "proyek" diambil dari sumber data REST "Proyek" dari titik akhir kustom.
  • Dinyatakan dataSourceBindings dalam array.
    • Target adalah nama bidang tugas build yang akan diisi ("proyek").
    • EndpointId adalah nama bidang tugas build yang berisi jenis titik akhir kustom.
    • Panggilan REST dipilih oleh dataSourceName.

Jika Anda berhasil menambahkan Tugas Build, Anda sekarang akan melihat Tugas Build saat menambahkan tugas ke alur build.

Gambar pemilih tugas build titik akhir layanan.

Setelah Anda menambahkan Tugas Build ke alur Anda, konfirmasikan bahwa tugas tersebut dapat melihat titik akhir Fabrikam yang Anda buat. Dropdown proyek dalam tutorial ini kosong karena kami tidak menggunakan layanan nyata. Setelah Anda mengganti Fabrikam dengan layanan Anda, ganti panggilan Projects dengan panggilan REST API Anda sendiri untuk menggunakan data dinamis di dalam tugas build Anda.

Gambar penyiapan tugas build titik akhir layanan.

Autentikasi

Skema autentikasi dalam titik akhir layanan menentukan kredensial yang akan digunakan untuk menyambungkan ke layanan eksternal. Untuk informasi selengkapnya dan untuk melihat skema autentikasi berikut ini, lihat dokumentasi skema autentikasi.

  • Autentikasi dasar
  • Autentikasi berbasis token
  • Autentikasi berbasis sertifikat
  • Tidak ada autentikasi

Langkah berikutnya