Mengotomatiskan integrasi Git dengan menggunakan API
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.
Prasyarat
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 Mulai cepat Fabric API.
Anda dapat menggunakan REST API tanpa PowerShell, tetapi skrip dalam artikel ini menggunakan PowerShell. Untuk menjalankan skrip, Anda perlu mengambil langkah-langkah berikut:
- Instal PowerShell.
- Pasang modul Azure PowerShell Az.
Fungsi API integrasi Git
REST API integrasi Git dapat membantu Anda mencapai integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) konten Anda. Berikut adalah beberapa contoh apa yang dapat dilakukan dengan menggunakan API:
Lihat item mana yang memiliki perubahan masuk dan item mana yang memiliki perubahan yang belum diterapkan ke Git dengan API status Git.
Dapatkan detail koneksi untuk ruang kerja yang ditentukan.
Sambungkan dan putuskan sambungan ruang kerja tertentu dari repositori Git dan cabang yang terhubung ke ruang kerja tersebut.
Perbarui kredensial Git saya untuk memperbarui detail konfigurasi kredensial Git Anda.
Dapatkan kredensial Git saya untuk mendapatkan detail konfigurasi kredensial Git Anda.
Menginisialisasi koneksi untuk ruang kerja yang tersambung ke Git.
Terapkan perubahan yang dibuat di ruang kerja ke cabang jarak jauh yang tersambung.
Perbarui ruang kerja dengan penerapan yang didorong ke cabang yang tersambung.
Contoh
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 GitHub sampel integrasi Fabric 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.
Masuk dan dapatkan token akses - Masuk ke Fabric sebagai pengguna (bukan perwakilan layanan). Gunakan perintah Connect-AzAccount untuk masuk. Untuk mendapatkan token akses, gunakan perintah Get-AzAccessToken .
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 $fabricToken = (Get-AzAccessToken -AsSecureString -ResourceUrl $global:resourceUrl).Token $global:fabricHeaders = @{ 'Content-Type' = "application/json" 'Authorization' = "Bearer {0}" -f $fabricToken } }
Panggil Connect API untuk menyambungkan ruang kerja ke repositori dan cabang Git.
# 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 = @{ gitProviderDetails =$azureDevOpsDetails } | ConvertTo-Json Invoke-RestMethod -Headers $global:fabricHeaders -Uri $connectUrl -Method POST -Body $connectToGitBody
Panggil 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 penerapan yang 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 Commit to Git REST API.
- Dapatkan OperationId Jangka Panjang untuk polling status operasi.
Penerapan 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 Dapatkan API status untuk melihat ruang kerja item mana 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 skrip Penerapan ke Git .
- Panggil Get LRO Status API pada interval tertentu (dalam detik) dan cetak statusnya.
Pertimbangan dan batasan
- Integrasi Git menggunakan API tunduk pada batasan yang sama dengan antarmuka pengguna integrasi Git.
- Perwakilan layanan tidak didukung.
- Merefresh model semantik menggunakan API refresh yang ditingkatkan menyebabkan git berbeda setelah setiap refresh.