Git-integratie automatiseren met behulp van API's
Met het Microsoft Fabric Git-integratiehulpprogramma kunnen teams samenwerken met behulp van broncodebeheer om een efficiënt en herbruikbaar releaseproces voor hun Fabric-inhoud te bouwen.
Met REST API's van Microsoft Fabric kunt u Fabric-procedures en -processen automatiseren om taken sneller en met minder fouten te voltooien. Deze efficiëntie leidt tot kostenbesparingen en verbeterde productiviteit.
In dit artikel wordt beschreven hoe u de REST API's voor Git-integratie gebruikt om Git-integratie in Microsoft Fabric te automatiseren.
Vereisten
Als u wilt werken met Git-API's voor Fabric, hebt u het volgende nodig:
Dezelfde vereisten als voor het gebruik van Git-integratie in de gebruikersinterface.
Een Microsoft Entra-token voor Fabric-service. Gebruik dit token in de autorisatieheader van de API-aanroep. Zie de quickstart voor fabric-API voor informatie over het ophalen van een token.
U kunt de REST API's zonder PowerShell gebruiken, maar de scripts in dit artikel gebruiken PowerShell. Als u de scripts wilt uitvoeren, moet u de volgende stappen uitvoeren:
- Installeer PowerShell.
- Installeer de Azure PowerShell Az-module.
Api-functies voor Git-integratie
De REST API's voor Git-integratie kunnen u helpen bij het bereiken van de continue integratie en continue levering (CI/CD) van uw inhoud. Hier volgen enkele voorbeelden van wat u kunt doen met behulp van de API's:
Bekijk welke items binnenkomende wijzigingen hebben en welke items wijzigingen hebben die nog niet zijn doorgevoerd in Git met de Git-status-API.
Haal verbindingsgegevens op voor de opgegeven werkruimte.
Maak verbinding met een specifieke werkruimte en verbreek deze los van de Git-opslagplaats en vertakking die ermee is verbonden.
Werk mijn Git-referenties bij om de configuratiegegevens van uw Git-referenties bij te werken.
Haal mijn Git-referenties op om de configuratiegegevens van uw Git-referenties op te halen.
Initialiseer een verbinding voor een werkruimte die is verbonden met Git.
Voer de wijzigingen door die in de werkruimte zijn aangebracht in de verbonden externe vertakking.
Werk de werkruimte bij met doorvoeringen die naar de verbonden vertakking zijn gepusht.
Voorbeelden
Gebruik de volgende PowerShell-scripts om te begrijpen hoe u verschillende algemene automatiseringsprocessen uitvoert. Als u de tekst in een PowerShell-voorbeeld wilt weergeven of kopiëren, gebruikt u de koppelingen in deze sectie. U kunt ook alle voorbeelden bekijken in de Git-integratievoorbeelden voor Fabric Git.
Verbinding maken en bijwerken
In deze sectie worden de stappen beschreven die nodig zijn voor het verbinden en bijwerken van een werkruimte met Git.
Zie Verbinding maken en bijwerken vanuit Git voor het volledige script.
Aanmelden en toegangstoken ophalen - Meld u als gebruiker aan bij Fabric (niet als service-principal). Gebruik de opdracht Connect-AzAccount om u aan te melden. Gebruik de opdracht Get-AzAccessToken om een toegangstoken op te halen.
Uw code moet er ongeveer als volgt uitzien:
$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 } }
Roep de Connect-API aan om de werkruimte te verbinden met een Git-opslagplaats en -vertakking.
# 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
Roep de Initialize Connection-API aan om de verbinding tussen de werkruimte en de Git-opslagplaats/vertakking te initialiseren.
# 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 "{}"
Roep op basis van het antwoord van de Initialize Connection API de Update From Git-API aan om de update te voltooien of doe niets als er geen actie is vereist.
Het volgende script wordt bijgewerkt en bewaakt de voortgang:
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")) }
Bijwerken vanuit Git
In deze sectie beschrijven we de stappen voor het bijwerken van een werkruimte met de wijzigingen van Git. In dit script werken we de werkruimte-items bij met wijzigingen van Git, maar laten we de Git-opslagplaats ongewijzigd.
Zie Werkruimte bijwerken vanuit Git voor het volledige script.
- Meld u aan bij Git en ontvang verificatie.
- Roep de Get Status-API aan om de update te bouwen vanuit de hoofdtekst van de Git-aanvraag.
- Roep de Update van git-API aan om de werkruimte bij te werken met doorvoeringen die naar de verbonden vertakking zijn gepusht.
Alles doorvoeren
Deze sectie bevat een stapsgewijze beschrijving van het programmatisch doorvoeren van alle wijzigingen van de werkruimte naar Git.
Zie Alle wijzigingen doorvoeren in Git voor het volledige script.
- Meld u aan bij Git en ontvang verificatie.
- Verbinding maken met werkruimte.
- Roep de doorvoer aan naar de Git REST API.
- Haal de Long Running OperationId op om de status van de bewerking te peilen.
Selectief doorvoeren
In deze sectie worden de stappen beschreven die nodig zijn voor het doorvoeren van alleen specifieke wijzigingen van de werkruimte naar Git.
Zie Doorvoeren selecteer wijzigingen in Git voor het volledige script.
- Meld u aan bij Git en ontvang verificatie.
- Verbinding maken met werkruimte.
- Roep de GET-status-API aan om te zien welke items werkruimte is gewijzigd.
- Selecteer de specifieke items die u wilt doorvoeren.
- Roep de Doorvoer aan de Git-API aan om de geselecteerde wijzigingen van de werkruimte door te voeren naar de verbonden externe vertakking.
De voortgang van langdurige bewerkingen bewaken
Zie Een langdurige bewerking peilen voor het volledige script.
- Haal de operationId op uit de update van Git of het doorvoeren naar Git-script .
- Roep de GET LRO-status-API aan met opgegeven intervallen (in seconden) en druk de status af.
Overwegingen en beperkingen
- Git-integratie met behulp van API's is onderhevig aan dezelfde beperkingen als de gebruikersinterface van Git-integratie.
- Service-principal wordt niet ondersteund.
- Als u een semantisch model vernieuwt met behulp van de uitgebreide vernieuwings-API, wordt na elke vernieuwing een Git-diff veroorzaakt.