Delen via


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:

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:

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:

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.

  1. 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
        }
    }
    
  2. 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
    
  3. 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 "{}"
    
  4. 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.

  1. Meld u aan bij Git en ontvang verificatie.
  2. Roep de Get Status-API aan om de update te bouwen vanuit de hoofdtekst van de Git-aanvraag.
  3. 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.

  1. Meld u aan bij Git en ontvang verificatie.
  2. Verbinding maken met werkruimte.
  3. Roep de doorvoer aan naar de Git REST API.
  4. 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.

  1. Meld u aan bij Git en ontvang verificatie.
  2. Verbinding maken met werkruimte.
  3. Roep de GET-status-API aan om te zien welke items werkruimte is gewijzigd.
  4. Selecteer de specifieke items die u wilt doorvoeren.
  5. 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.

  1. Haal de operationId op uit de update van Git of het doorvoeren naar Git-script .
  2. 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.