Automatisieren der Git-Integration mithilfe von APIs
Mit dem Microsoft Fabric-Tool zur Git-Integration können Teams zusammenarbeiten, um mit Hilfe von Quellcodeverwaltung einen effizienten und wiederverwendbaren Releaseprozess für ihre Fabric-Inhalte zu erstellen.
Mit der Microsoft Fabric-REST-API können Sie Fabric-Vorgehensweisen und -Prozesse automatisieren, um Aufgaben schneller und mit weniger Fehlern zu erledigen. Dieses effiziente Verfahren führt zu Kosteneinsparungen und Produktivitätssteigerungen.
In diesem Artikel wird beschrieben, wie Sie die die Git-Integration in Microsoft Fabric mit Hilfe der Git-Integrations-REST-API automatisieren.
Voraussetzungen
Um mit Fabric-Git-APIs zu arbeiten, benötigen Sie:
Die gleichen Voraussetzungen, die Sie für die Nutzung der Git-Integration in der Benutzeroberfläche erfüllen müssen.
Ein Microsoft Entra-Token zur Nutzung von Fabric. Verwenden Sie dieses Token im Autorisierungsheader des API-Aufrufs. Informationen zum Abrufen eines Tokens finden Sie im Fabric-API-Schnellstarter.
Sie können die REST-API ohne PowerShell verwenden; die Skripts in diesem Artikel nutzen aber PowerShell. Um die Skripts ausführen zu können, müssen Sie folgende Schritte unternehmen:
- Installieren Sie PowerShell.
- Installieren Sie das Azure PowerShell Az-Modul.
API-Funktionen zur Git-Integration
Die GIT-Integrations-REST-API können Ihnen dabei helfen, Ihre Inhalte kontinuierlich zu integrieren und bereitzustellen (Continuous Integration und Continuous Delivery; CI/CD). Im Folgenden finden Sie einige Beispiele dafür, was mithilfe der API möglich ist:
Sehen Sie, welche Elemente eingehende Änderungen haben und welche Elemente Änderungen aufweisen, die noch nicht mit der Git-Status-API auf Git committet wurden.
Verbindungsdetails für den angegebenen Arbeitsbereich abrufen.
Verbinden und trennen eines bestimmten Arbeitsbereichs vom Git-Repository und der damit verbundenen Verzweigung.
Meine Git-Anmeldeinformationen aktualisieren zum Aktualisieren der Konfigurationsdetails Ihrer Git-Anmeldeinformationen.
Meine Git-Anmeldeinformationen abrufen zum Abrufen der Konfigurationsdetails Ihrer Git-Anmeldeinformationen.
Initialisieren einer Verbindung für einen Arbeitsbereich, der mit Git verbunden ist.
Committen der im Arbeitsbereich vorgenommenen Änderungen an der verbundenen Remote-Verzweigung.
Aktualisieren des Arbeitsbereichs mit Commits, die an die verbundene Verzweigung gepushed werden.
Beispiele
Verwenden Sie die folgenden PowerShell-Skripts, um herauszufinden, wie mehrere geläufige Automatisierungsprozesse ausgeführt werden. Verwenden Sie die Links in diesem Abschnitt, um den Text in einem PowerShell-Beispiel anzuzeigen oder zu kopieren. Sie können alle Beispiele auch im GitHub-Repositorys der Fabric Git-Integrationsbeispiele sehen.
Verbinden und aktualisieren
Dieser Abschnitt erklärt, welche Schritte erforderlich sind, um einen Arbeitsbereich mit Git zu verbinden und zu aktualisieren.
Sie finden das vollständige Skript unter Mit Git verbinden und von dort aktualisieren.
Melden Sie sich an und erhalten Sie Zugriffstoken – Melden Sie sich als Benutzer in Fabric an (kein Dienstprinzipal). Führen Sie zum Anmelden den Befehl Connect-AzAccount aus. Verwenden Sie den Befehl Get-AzAccessToken, um ein Zugriffstoken zu erhalten.
Ihr Code sollte in etwa wie folgt aussehen:
$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 } }
Rufen Sie die Connect-API auf, um den Arbeitsbereich mit einem Git-Repository und einer Verzweigung zu verbinden.
# 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
Rufen Sie die Initialize-Connection-API auf, um die Verbindung zwischen dem Arbeitsbereich und der Git-Repository-Verzweigung zu initialisieren.
# 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 "{}"
Rufen Sie je nach Antwort der Initialize Connection-API die Update from Git-API auf, um die Synchronisierung abzuschließen, oder führen Sie keine Aktion aus, wenn keine erforderlich ist.
Das folgende Skript aktualisiert und überwacht den Fortschritt:
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")) }
Aus Git aktualisieren
In diesem Abschnitt beschreiben wir die Schritte, die zur Aktualisierung eines Arbeitsbereichs mit den Änderungen aus Git erforderlich sind. In diesem Skript aktualisieren wir die Arbeitsbereichselemente mit Änderungen aus Git, lassen das Git-Repository dabei aber unverändert.
Das vollständige Skript finden Sie unter Aktualisieren des Arbeitsbereichs aus Git.
- Melden Sie sich bei Git an und rufen Sie die Authentifizierung ab.
- Rufen Sie die Get-Status-API auf, um das Update aus dem Git-Anforderungstext zu erstellen.
- Rufen Sie die Update-From-Git-API auf, um den Arbeitsbereich mit Commits zu aktualisieren, die an die verbundene Verzweigung gepushed werden.
Commit für alle
Dieser Abschnitt enthält eine schrittweise Beschreibung, wie sämtliche Änderungen vom Arbeitsbereich programmgesteuert auf Git committet werden.
Das vollständige Skript finden Sie unter Alle Änderungen an Git committen.
- Melden Sie sich bei Git an und rufen Sie die Authentifizierung ab.
- Stellen Sie eine Verbindung zum Arbeitsbereich her
- Rufen Sie die Commit to Git-REST-API auf.
- Nutzen Sie die Long Running OperationId, um den Status des Vorgangs abzurufen.
Selektive Commits
In diesem Abschnitt werden die Schritte erläutert, mit denen Sie nur bestimmte Änderungen vom Arbeitsbereich in Git committen können.
Das vollständige Skript finden Sie unter Ausgewählte Änderungen an Git committen.
- Melden Sie sich bei Git an und rufen Sie die Authentifizierung ab.
- Stellen Sie eine Verbindung zum Arbeitsbereich her
- Rufen Sie die Get-Status-API auf, um zu sehen, welche Elemente im Arbeitsbereich geändert wurden.
- Wählen Sie nur jene Elemente aus, die Sie committen möchten.
- Rufen Sie die Commit to Git-API auf, um die ausgewählten Änderungen vom Arbeitsbereich in die verbundene Remoteverzweigung zu committen.
Überwachen Sie den Verlauf zeitintensiver Vorgänge
Ein vollständiges Skript finden Sie unter Abruf einer lang laufenden Operation.
- Rufen Sie die operationId aus dem einem der Skripts Update from Git oder Commit to Git ab.
- Rufen Sie die Get LRO Status-API in festgelegten Intervallen auf, und drucken Sie den Status.
Überlegungen und Einschränkungen
- Die Git-Integration mit Hilfe von API unterliegt den gleichen Einschränkungen wie die Git-Integrations-Benutzeroberfläche.
- Dienstprinzipale werden nicht unterstützt.
- Das Aktualisieren eines semantischen Modells mit der erweiterten Aktualisierungs-API führt nach jeder Aktualisierung zu einem Git-diff.