Automatisera Git-integrering med hjälp av API:er
Med Microsoft Fabric Git-integreringsverktyget kan team arbeta tillsammans med källkontroll för att skapa en effektiv och återanvändbar lanseringsprocess för sitt Fabric-innehåll.
Med Rest-API:er för Microsoft Fabric kan du automatisera Fabric-procedurer och -processer för att utföra uppgifter snabbare och med färre fel. Den här effektiviteten leder till kostnadsbesparingar och förbättrad produktivitet.
I den här artikeln beskrivs hur du använder REST-API:er för Git-integrering för att automatisera Git-integrering i Microsoft Fabric.
Förutsättningar
Om du vill arbeta med Git-API:er för infrastrukturresurser behöver du:
Samma krav som du behöver för att använda Git-integrering i användargränssnittet.
En Microsoft Entra-token för Fabric-tjänsten. Använd den token i auktoriseringshuvudet för API-anropet. Information om hur du hämtar en token finns i Snabbstart för Infrastruktur-API.
Du kan använda REST-API:er utan PowerShell, men skripten i den här artikeln använder PowerShell. Om du vill köra skripten måste du utföra följande steg:
- Installera PowerShell.
- Installera Azure PowerShell Az-modulen.
Api-funktioner för Git-integrering
Rest-API:er för Git-integrering kan hjälpa dig att uppnå kontinuerlig integrering och kontinuerlig leverans (CI/CD) av ditt innehåll. Här följer några exempel på vad som kan göras med hjälp av API:erna:
Se vilka objekt som har inkommande ändringar och vilka objekt som har ändringar som ännu inte har checkats in till Git med Git-status-API:et.
Hämta anslutningsinformation för den angivna arbetsytan.
Anslut och koppla från en specifik arbetsyta från Git-lagringsplatsen och grenen som är ansluten till den.
Uppdatera mina Git-autentiseringsuppgifter för att uppdatera konfigurationsinformationen för Dina Git-autentiseringsuppgifter.
Hämta mina Git-autentiseringsuppgifter för att hämta konfigurationsinformation för Git-autentiseringsuppgifter.
Initiera en anslutning för en arbetsyta som är ansluten till Git.
Checka in ändringarna som gjorts på arbetsytan till den anslutna fjärrgrenen.
Uppdatera arbetsytan med incheckningar som skickas till den anslutna grenen.
Exempel
Använd följande PowerShell-skript för att förstå hur du utför flera vanliga automatiseringsprocesser. Om du vill visa eller kopiera texten i ett PowerShell-exempel använder du länkarna i det här avsnittet. Du kan också se alla exempel i Git-integreringsexemplen för Fabric GitHub-lagringsplatsen.
Ansluta och uppdatera
I det här avsnittet beskrivs stegen för att ansluta och uppdatera en arbetsyta med Git.
Det fullständiga skriptet finns i Ansluta och uppdatera från Git.
Logga in och hämta åtkomsttoken – Logga in på Infrastrukturresurser som användare (inte tjänstens huvudnamn). Använd kommandot Connect-AzAccount för att logga in. Om du vill hämta en åtkomsttoken använder du kommandot Get-AzAccessToken .
Koden bör se ut ungefär så här:
$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 } }
Anropa Connect-API:et för att ansluta arbetsytan till en Git-lagringsplats och -gren.
# 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
Anropa API:et Initiera anslutning för att initiera anslutningen mellan arbetsytan och Git-lagringsplatsen/grenen.
# 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 "{}"
Baserat på svaret från API:et Initiera anslutning anropar du antingen Uppdatering från Git-API :et för att slutföra uppdateringen eller gör ingenting om ingen åtgärd krävs.
Följande skript uppdaterar och övervakar förloppet:
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")) }
Uppdatera från Git
I det här avsnittet beskriver vi stegen för att uppdatera en arbetsyta med ändringarna från Git. I det här skriptet uppdaterar vi arbetsyteobjekten med ändringar från Git, men vi lämnar Git-lagringsplatsen oförändrad.
Det fullständiga skriptet finns i Uppdatera arbetsyta från Git.
- Logga in på Git och hämta autentisering.
- Anropa API:et Hämta status för att skapa uppdateringen från Git-begärandetexten.
- Anropa Uppdatering från Git-API:et för att uppdatera arbetsytan med incheckningar som skickas till den anslutna grenen.
Genomför alla
Det här avsnittet innehåller en stegvis beskrivning av hur du programmatiskt genomför alla ändringar från arbetsytan till Git.
Det fullständiga skriptet finns i Checka in alla ändringar i Git.
- Logga in på Git och hämta autentisering.
- Anslut till arbetsytan.
- Anropa Commit to Git REST API (Checka in till Git REST API).
- Hämta Long Running OperationId för att avsöka status för åtgärden.
Selektiv incheckning
I det här avsnittet beskrivs de steg som ingår i att endast utföra specifika ändringar från arbetsytan till Git.
Det fullständiga skriptet finns i Checka in välj ändringar i Git.
- Logga in på Git och hämta autentisering.
- Anslut till arbetsytan.
- Anropa API:et Hämta status för att se vilka objekt arbetsytan har ändrats.
- Välj de specifika objekt som ska checkas in.
- Anropa Incheckning till Git-API:et för att checka in de valda ändringarna från arbetsytan till den anslutna fjärrgrenen.
Övervaka förloppet för tidskrävande åtgärder
Det fullständiga skriptet finns i Avsöka en tidskrävande åtgärd.
- Hämta operationId från Skriptet Uppdatera från Git eller Checka in till Git .
- Anropa API:et Hämta LRO-status med angivna intervall (i sekunder) och skriv ut statusen.
Beaktanden och begränsningar
- Git-integrering med API:er omfattas av samma begränsningar som användargränssnittet för Git-integrering.
- Tjänstens huvudnamn stöds inte.
- Om du uppdaterar en semantisk modell med hjälp av API:et för förbättrad uppdatering orsakas en Git-diff efter varje uppdatering.