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.
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.
Catatan
Untuk informasi selengkapnya, lihat artikel berikut ini:
- Membangun referensi tugas untuk menemukan skema untuk file json tugas build
- Menambahkan ekstensi tugas alur kustom
- Mengintegrasikan tugas build
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, select '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.
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.
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