Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Alat integrasi Microsoft Fabric Git memungkinkan tim untuk bekerja sama menggunakan kontrol sumber untuk membangun proses rilis yang efisien dan dapat digunakan kembali untuk konten Fabric mereka.
Dengan MICROSOFT Fabric REST API, Anda dapat mengotomatiskan prosedur dan proses Fabric untuk menyelesaikan tugas lebih cepat dan dengan lebih sedikit kesalahan. Efisiensi ini menyebabkan penghematan biaya dan peningkatan produktivitas.
Artikel ini menjelaskan cara menggunakan REST API integrasi Git untuk mengotomatiskan integrasi Git di Microsoft Fabric.
Prerequisites
Untuk bekerja dengan Fabric Git API, Anda memerlukan:
Prasyarat yang sama yang Anda perlukan untuk menggunakan integrasi Git di UI.
Token Microsoft Entra untuk layanan Fabric. Gunakan token tersebut di header otorisasi panggilan API. Untuk informasi tentang cara mendapatkan token, lihat Panduan Cepat Fabric API.
Jika Anda menggunakan perwakilan layanan, perwakilan layanan memerlukan izin yang sama dengan prinsipal pengguna. Untuk menyiapkan perwakilan layanan untuk Azure DevOps, lihat Integrasi Git dengan perwakilan layanan.
Anda dapat menggunakan REST API tanpa PowerShell, tetapi skrip dalam artikel ini menggunakan PowerShell. Untuk menjalankan skrip, lakukan langkah-langkah berikut:
- Instal PowerShell.
- Pasang modul Azure PowerShell Az.
Fungsi API integrasi Git
REST API integrasi Git dapat membantu Anda mencapai integrasi dan pengiriman berkelanjutan (CI/CD) dari konten Anda. Berikut adalah beberapa contoh apa yang dapat dilakukan dengan menggunakan API:
Sambungkan dan putuskan sambungan ruang kerja tertentu dari repositori Git dan cabang yang terhubung ke ruang kerja tersebut. (Connect memerlukan connectionId dari info masuk penyedia Git.)
Dapatkan detail koneksi untuk ruang kerja yang ditentukan.
Perbarui kredensial Git Anda untuk memperbarui detail konfigurasi kredensial Git Anda. Memerlukan connectionId dari kredensial penyedia Git.
Dapatkan kredensial Git saya untuk mendapatkan detail konfigurasi kredensial Git Anda.
Menginisialisasi koneksi untuk ruang kerja yang tersambung ke Git.
Lihat item mana yang memiliki perubahan masuk dan item mana yang memiliki perubahan yang belum diterapkan ke Git dengan API status Git.
Terapkan perubahan yang dibuat di ruang kerja ke cabang jarak jauh yang tersambung.
Perbarui ruang kerja dengan commit yang di-push ke cabang yang terhubung.
Examples
Gunakan skrip PowerShell berikut untuk memahami cara melakukan beberapa proses otomatisasi umum. Untuk menampilkan atau menyalin teks dalam sampel PowerShell, gunakan tautan di bagian ini. Anda juga dapat melihat semua contoh dalam repositori sampel integrasi Fabric Git di GitHub.
Menyambungkan dan memperbarui
Bagian ini menjelaskan langkah-langkah yang terlibat dalam menyambungkan dan memperbarui ruang kerja dengan Git.
Untuk skrip lengkap, lihat Menyambungkan dan memperbarui dari Git. (Kompatibilitas skrip adalah PowerShell 5.1)
Sambungkan ke akun Azure dan dapatkan token akses - Masuk ke Fabric sebagai pengguna atau perwakilan layanan. Gunakan perintah Connect-AzAccount untuk menyambungkan. Untuk mendapatkan token akses, gunakan perintah Get-AzAccessToken , dan konversi token string aman menjadi teks biasa
Kode Anda akan terlihat seperti ini:
$global:resourceUrl = "https://api.fabric.microsoft.com" $global:fabricHeaders = @{} function SetFabricHeaders() { #Login to Azure Connect-AzAccount | Out-Null # Get authentication $secureFabricToken = (Get-AzAccessToken -AsSecureString -ResourceUrl $global:resourceUrl).Token # Convert secure string to plain test $ssPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureFabricToken) try { $fabricToken = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ssPtr) } finally { [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr) } $global:fabricHeaders = @{ 'Content-Type' = "application/json" 'Authorization' = "Bearer {0}" -f $fabricToken } }Panggil Connect API untuk menyambungkan ruang kerja ke repositori dan cabang Git. (Anda mungkin perlu membuat koneksi terlebih dahulu)
Untuk informasi tentang cara mendapatkan detail Koneksi (ID, Nama), lihat Mendapatkan atau membuat koneksi kredensial penyedia Git.
$global:baseUrl = "https://api.fabric.microsoft.com/v1" $workspaceName = "<WORKSPACE NAME>" $getWorkspacesUrl = "{0}/workspaces" -f $global:baseUrl $workspaces = (Invoke-RestMethod -Headers $global:fabricHeaders -Uri $getWorkspacesUrl -Method GET).value # Find the workspace by display name $workspace = $workspaces | Where-Object {$_.DisplayName -eq $workspaceName} # Connect to Git Write-Host "Connecting the workspace '$workspaceName' to Git." $connectUrl = "{0}/workspaces/{1}/git/connect" -f $global:baseUrl, $workspace.Id # AzureDevOps details $azureDevOpsDetails = @{ gitProviderType = "AzureDevOps" organizationName = "<ORGANIZATION NAME>" projectName = "<PROJECT NAME>" repositoryName = "<REPOSITORY NAME>" branchName = "<BRANCH NAME>" directoryName = "<DIRECTORY NAME>" } $connectToGitBody = @{} #Leave only one of the following two (delete the other one): #----------------------------------------------------------------------------------------------- # 1. Automatic (SSO) $connectToGitBody = @{ gitProviderDetails = $gitProviderDetails } | ConvertTo-Json #----------------------------------------------------------------------------------------------- # 2. ConfiguredConnection (User or service principal) # Get workspaces $connectionName = "<CONNECTION Name>" $getConnectionsUrl = "{0}/connections" -f $global:baseUrl $connections = (Invoke-RestMethod -Headers $global:fabricHeaders -Uri $getConnectionsUrl -Method GET).value # Find the connection by display name $connection = $connections | Where-Object {$_.DisplayName -eq $connectionName} $connectToGitBody = @{ gitProviderDetails = $azureDevOpsDetails myGitCredentials = @{ source = "ConfiguredConnection" connectionId = $connection.id } } | ConvertTo-Json #----------------------------------------------------------------------------------------------- Invoke-RestMethod -Headers $global:fabricHeaders -Uri $connectUrl -Method POST -Body $connectToGitBodyPanggil API Inisialisasi Koneksi untuk menginisialisasi koneksi antara ruang kerja dan repositori/cabang Git.
# Initialize Connection Write-Host "Initializing Git connection for workspace '$workspaceName'." $initializeConnectionUrl = "{0}/workspaces/{1}/git/initializeConnection" -f $global:baseUrl, $workspace.Id $initializeConnectionResponse = Invoke-RestMethod -Headers $global:fabricHeaders -Uri $initializeConnectionUrl -Method POST -Body "{}"Berdasarkan respons dari API Inisialisasi Koneksi, panggil Update From Git API untuk menyelesaikan pembaruan, atau jangan lakukan apa pun jika tidak ada tindakan yang diperlukan.
Skrip berikut memperbarui dan memantau kemajuan:
if ($initializeConnectionResponse.RequiredAction -eq "UpdateFromGit") { # Update from Git Write-Host "Updating the workspace '$workspaceName' from Git." $updateFromGitUrl = "{0}/workspaces/{1}/git/updateFromGit" -f $global:baseUrl, $workspace.Id $updateFromGitBody = @{ remoteCommitHash = $initializeConnectionResponse.RemoteCommitHash workspaceHead = $initializeConnectionResponse.WorkspaceHead } | ConvertTo-Json $updateFromGitResponse = Invoke-WebRequest -Headers $global:fabricHeaders -Uri $updateFromGitUrl -Method POST -Body $updateFromGitBody $operationId = $updateFromGitResponse.Headers['x-ms-operation-id'] $retryAfter = $updateFromGitResponse.Headers['Retry-After'] Write-Host "Long Running Operation ID: '$operationId' has been scheduled for updating the workspace '$workspaceName' from Git with a retry-after time of '$retryAfter' seconds." -ForegroundColor Green # Poll Long Running Operation $getOperationState = "{0}/operations/{1}" -f $global:baseUrl, $operationId do { $operationState = Invoke-RestMethod -Headers $global:fabricHeaders -Uri $getOperationState -Method GET Write-Host "Update from Git operation status: $($operationState.Status)" if ($operationState.Status -in @("NotStarted", "Running")) { Start-Sleep -Seconds $retryAfter } } while($operationState.Status -in @("NotStarted", "Running")) }
Pembaruan dari Git
Di bagian ini, kami menjelaskan langkah-langkah yang terlibat dalam memperbarui ruang kerja dengan perubahan dari Git. Dalam skrip ini, kami memperbarui item ruang kerja dengan perubahan dari Git, tetapi kami membiarkan repositori Git tidak berubah.
Untuk skrip lengkap, lihat Memperbarui ruang kerja dari Git.
- Masuk ke Git dan dapatkan autentikasi.
- Panggil Get Status API untuk membangun pembaruan dari isi permintaan Git.
- Panggil Update From Git API untuk memperbarui ruang kerja dengan commit yang telah didorong ke cabang yang terhubung.
Terapkan semua
Bagian ini memberikan deskripsi langkah demi langkah tentang cara menerapkan semua perubahan secara terprogram dari ruang kerja ke Git.
Untuk skrip lengkap, lihat Menerapkan semua perubahan pada Git.
- Masuk ke Git dan dapatkan autentikasi.
- Sambungkan ke ruang kerja.
- Panggil API REST untuk Commit to Git.
- Dapatkan OperationId untuk Operasi yang Berjalan Lama guna memantau status operasi.
Komit Selektif
Bagian ini menjelaskan langkah-langkah yang terlibat dalam menerapkan hanya perubahan tertentu dari ruang kerja ke Git.
Untuk skrip lengkap, lihat Menerapkan perubahan pada Git.
- Masuk ke Git dan dapatkan autentikasi.
- Sambungkan ke ruang kerja.
- Panggil API Dapatkan Status untuk melihat item mana pada ruang kerja yang diubah.
- Pilih item tertentu yang akan dikomit.
- Panggil Commit to Git API untuk menerapkan perubahan yang dipilih dari ruang kerja ke cabang jarak jauh yang terhubung.
Memantau kemajuan operasi jangka panjang
Untuk skrip lengkap, lihat Polling operasi jangka panjang.
- Ambil operationId dari perbarui dari Git atau commit ke Git script.
- Panggil Get LRO Status API pada interval tertentu (dalam detik) dan cetak statusnya.
Mendapatkan atau membuat koneksi kredensial penyedia Git
Untuk menyambungkan ke repositori Git atau memperbarui kredensial Git, Anda perlu memberikan connectionId. ConnectionId dapat berasal dari koneksi baru yang Anda buat, atau koneksi yang sudah ada.
- Membuat koneksi baru dengan kredensial penyedia Git Anda
- Gunakan koneksi yang sudah ada yang izinnya Anda miliki.
Membuat koneksi baru yang menyimpan kredensial Git Anda
Cuplikan kode berikut menunjukkan isi permintaan sampel untuk membuat koneksi yang menyimpan kredensial Azure DevOps Anda. Contoh lengkap dapat ditemukan di repositori sampel Fabric.
# Connection with ServicePrincipal details for AzureDevOpsSourceControl
$adoSPConnection = @{
connectivityType = "ShareableCloud"
displayName = "<CONNECTION NAME>"
connectionDetails = @{
type = "AzureDevOpsSourceControl"
creationMethod = "AzureDevOpsSourceControl.Contents"
parameters = @(
@{
dataType = "Text"
name = "url"
value = "<Repo url in Azure DevOps>"
}
)
}
credentialDetails = @{
credentials = @{
credentialType = "ServicePrincipal"
tenantId = "<SP tenant (directory) id (Guid)>"
servicePrincipalClientId = "<SP APP (client) id (Guid)>"
servicePrincipalSecret = "<SP Secret>"
}
}
}
#Note: AzureDevOps for UserPrincipal is not supported (since it requires interactive OAuth2)
Permintaan sampel
POST https://api.fabric.microsoft.com/v1/connections
{
"displayName": "<CONNECTION NAME>",
"connectivityType": "ShareableCloud",
"connectionDetails": {
"creationMethod": "AzureDevOpsSourceControl.Contents",
"type": "AzureDevOpsSourceControl",
"parameters": [
{
"dataType": "Text",
"name": "url",
"value": "<Repo url in Azure DevOps>”
}
]
},
"credentialDetails": {
"credentials": {
"credentialType": "ServicePrincipal",
"tenantId": “<SP tenant (directory) id (Guid)>”,
"servicePrincipalClientId": “<SP APP (client) id (Guid)>”,
"servicePrincipalSecret": “<SP Secret>”
}
}
}
Respons sampel:
{
"allowConnectionUsageInGateway": false,
"id": "********-****-****-****-c13b543982ac",
"displayName": "<CONNECTION NAME>",
"connectivityType": "ShareableCloud",
"connectionDetails": {
"path": "<Repo url in Azure DevOps>",
"type": "AzureDevOpsSourceControl"
},
"privacyLevel": "Organizational",
"credentialDetails": {
"credentialType": "ServicePrincipal",
"singleSignOnType": "None",
"connectionEncryption": "NotEncrypted",
"skipTestConnection": false
}
}
Mendapatkan daftar koneksi yang sudah ada
Gunakan API Daftar koneksi untuk mendapatkan daftar koneksi yang sudah ada yang izinnya Anda miliki, dan propertinya.
Permohonan sampel
GET https://api.fabric.microsoft.com/v1/connections
Contoh tanggapan
{
"value": [
{
"id": "e3607d15-6b41-4d11-b8f4-57cdcb19ffc8",
"displayName": "MyGitHubPAT1",
"gatewayId": null,
"connectivityType": "ShareableCloud",
"connectionDetails": {
"path": "https://github.com",
"type": "GitHubSourceControl"
},
"privacyLevel": "Organizational",
"credentialDetails": {
"credentialType": "Key",
"singleSignOnType": "None",
"connectionEncryption": "NotEncrypted",
"skipTestConnection": false
}
},
{
"id": "3aba8f7f-d1ba-42b1-bb41-980029d5a1c1",
"displayName": "MyGitHubPAT2",
"gatewayId": null,
"connectivityType": "ShareableCloud",
"connectionDetails": {
"path": "https://github.com/OrganizationName/RepositoryName",
"type": "GitHubSourceControl"
},
"privacyLevel": "Organizational",
"credentialDetails": {
"credentialType": "Key",
"singleSignOnType": "None",
"connectionEncryption": "NotEncrypted",
"skipTestConnection": false
}
}
]
}
Salin ID koneksi yang Anda inginkan dan gunakan di Git - Connect atau Git - Update My Git Credentials API.
Pertimbangan dan batasan
- Integrasi Git menggunakan API tunduk pada batasan yang sama dengan antarmuka pengguna integrasi Git.
- Merefresh model semantik menggunakan Enhanced refresh API menyebabkan perbedaan Git diff setelah setiap refresh.