Automatiser Git-integration ved hjælp af API'er
Integrationsværktøjet til Microsoft Fabric Git gør det muligt for teams at arbejde sammen ved hjælp af kildekontrol for at skabe en effektiv og genbrugelig udgivelsesproces for deres Fabric-indhold.
Med Microsoft Fabric REST API'er kan du automatisere Fabric-procedurer og -processer for at udføre opgaver hurtigere og med færre fejl. Denne effektivitet medfører omkostningsbesparelser og forbedret produktivitet.
I denne artikel beskrives det, hvordan du bruger REST API'er til Git-integration til at automatisere Git-integration i Microsoft Fabric.
Forudsætninger
Hvis du vil arbejde med Fabric Git-API'er, skal du bruge:
De samme forudsætninger, du skal bruge for at bruge Git-integration i brugergrænsefladen.
Et Microsoft Entra-token til Fabric-tjenesten. Brug dette token i godkendelsesheaderen for API-kaldet. Du kan få oplysninger om, hvordan du får et token, under Hurtig start af Fabric API.
Du kan bruge REST API'erne uden PowerShell, men scripts i denne artikel bruger PowerShell. Hvis du vil køre scripts, skal du benytte følgende fremgangsmåde:
- Installér PowerShell.
- Installér Azure PowerShell Az-modulet.
API-funktioner til Git-integration
REST API'er til Git-integration kan hjælpe dig med at opnå kontinuerlig integration og kontinuerlig levering (CI/CD) af dit indhold. Her er nogle eksempler på, hvad der kan gøres ved hjælp af API'erne:
Se, hvilke elementer der har indgående ændringer, og hvilke elementer der har ændringer, der endnu ikke er bekræftet i Git med Git-status-API'en.
Hent forbindelsesoplysninger for det angivne arbejdsområde.
Opret forbindelse til og afbryd forbindelsen til et bestemt arbejdsområde fra Git-lageret og den forgrening, der er forbundet til det.
Opdater mine Git-legitimationsoplysninger for at opdatere konfigurationsoplysningerne for dine Git-legitimationsoplysninger.
Hent mine Git-legitimationsoplysninger for at få konfigurationsoplysninger om dine Git-legitimationsoplysninger.
Initialiser en forbindelse for et arbejdsområde, der er forbundet til Git.
Bekræft de ændringer, der er foretaget i arbejdsområdet, til den forbundne eksterne forgrening.
Opdater arbejdsområdet med bekræftelser, der er pushet til den forbundne forgrening.
Eksempler
Brug følgende PowerShell-scripts til at forstå, hvordan du udfører flere almindelige automatiseringsprocesser. Hvis du vil have vist eller kopiere teksten i et PowerShell-eksempel, skal du bruge linkene i dette afsnit. Du kan også se alle eksemplerne i GitHub-lageret med Fabric Git-integrationseksempler .
Opret forbindelse, og opdater
I dette afsnit beskrives de trin, der er involveret i at oprette forbindelse til og opdatere et arbejdsområde med Git.
Du kan se hele scriptet under Opret forbindelse og opdater fra Git.
Log på, og få adgangstoken – Log på Fabric som bruger (ikke en tjenesteprincipal). Brug kommandoen Connect-AzAccount til at logge på. Hvis du vil hente et adgangstoken , skal du bruge kommandoen Get-AzAccessToken .
Din kode bør se nogenlunde sådan ud:
$global:resourceUrl = "https://api.fabric.microsoft.com" $global:fabricHeaders = @{} function SetFabricHeaders() { #Login to Azure Connect-AzAccount | Out-Null # Get authentication $fabricToken = (Get-AzAccessToken -ResourceUrl $global:resourceUrl).Token $global:fabricHeaders = @{ 'Content-Type' = "application/json" 'Authorization' = "Bearer {0}" -f $fabricToken } }
Kald Connect-API'en for at oprette forbindelse mellem arbejdsområdet og et Git-lager og en git-forgrening.
# 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
Kald API'en Til initialiser forbindelse for at initialisere forbindelsen mellem arbejdsområdet og Git-lageret/-forgreningen.
# 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 "{}"
Baseret på svaret fra API'en til initialisering af forbindelse skal du enten kalde API'en Opdater fra Git for at fuldføre opdateringen eller foretage dig noget, hvis der ikke kræves nogen handling.
Følgende script opdaterer og overvåger status:
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")) }
Opdatering fra Git
I dette afsnit beskriver vi de trin, der er involveret i opdatering af et arbejdsområde med ændringerne fra Git. I dette script opdaterer vi elementerne i arbejdsområdet med ændringer fra Git, men vi lader Git-lageret være uændret.
Du kan se hele scriptet under Opdater arbejdsområde fra Git.
- Log på Git, og hent godkendelse.
- Kald API'en Get Status for at oprette opdateringen fra brødteksten i Git-anmodningen.
- Kald Api'en Opdater fra Git for at opdatere arbejdsområdet med bekræftelser, der er pushet til den forbundne forgrening.
Bekræft alle
Dette afsnit indeholder en trinvis beskrivelse af, hvordan du programmatisk kan bekræfte alle ændringer fra arbejdsområdet til Git.
Du kan se hele scriptet under Bekræft alle ændringer i Git.
- Log på Git, og hent godkendelse.
- Opret forbindelse til arbejdsområdet.
- Kald API'en Commit to Git REST.
- Hent Long Running OperationId for at forespørge om status for handlingen.
Selektiv bekræftelse
I dette afsnit beskrives de trin, der er involveret i kun at foretage bestemte ændringer fra arbejdsområdet til Git.
Du kan se hele scriptet under Bekræft valg af ændringer til Git.
- Log på Git, og hent godkendelse.
- Opret forbindelse til arbejdsområdet.
- Kald API'en Hent status for at se, hvilke elementer arbejdsområdet blev ændret.
- Vælg de specifikke elementer, der skal bekræftes.
- Kald API'en Bekræft til Git for at bekræfte de valgte ændringer fra arbejdsområdet til den forbundne eksterne forgrening.
Overvåg status for langvarige handlinger
Du kan se hele scriptet under Poller en handling, der kører i lang tid.
- Hent operationId fra Update From Git eller scriptet Commit to Git .
- Kald API'en Hent LRO-status med angivne intervaller (i sekunder), og udskriv status.
Overvejelser og begrænsninger
- Git-integration ved hjælp af API'er er underlagt de samme begrænsninger som Brugergrænsefladen til Git-integration.
- Tjenesteprincipalen understøttes ikke.
- Opdatering af en semantisk model ved hjælp af API'en for udvidet opdatering medfører en Git-diff efter hver opdatering.