Dela via


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:

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:

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:

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.

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

  1. Logga in på Git och hämta autentisering.
  2. Anropa API:et Hämta status för att skapa uppdateringen från Git-begärandetexten.
  3. 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.

  1. Logga in på Git och hämta autentisering.
  2. Anslut till arbetsytan.
  3. Anropa Commit to Git REST API (Checka in till Git REST API).
  4. 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.

  1. Logga in på Git och hämta autentisering.
  2. Anslut till arbetsytan.
  3. Anropa API:et Hämta status för att se vilka objekt arbetsytan har ändrats.
  4. Välj de specifika objekt som ska checkas in.
  5. 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.

  1. Hämta operationId från Skriptet Uppdatera från Git eller Checka in till Git .
  2. 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.