Del via


Automatiser Git-integrering ved hjelp av API-er

Microsoft Fabric Git-integreringsverktøyet gjør det mulig for team å samarbeide ved hjelp av kildekontroll for å bygge en effektiv og gjenbrukbar utgivelsesprosess for fabric-innholdet.

Med REST-API-er for Microsoft Fabric kan du automatisere Fabric-prosedyrer og -prosesser for å fullføre oppgaver raskere og med færre feil. Denne effektiviteten fører til kostnadsbesparelser og forbedret produktivitet.

Denne artikkelen beskriver hvordan du bruker REST-API-ene for Git-integrering til å automatisere Git-integrering i Microsoft Fabric.

Forutsetning

Hvis du vil arbeide med Fabric Git API-er, trenger du:

Du kan bruke REST-API-er uten PowerShell, men skriptene i denne artikkelen bruker PowerShell. Hvis du vil kjøre skriptene, må du utføre følgende trinn:

API-funksjoner for Git-integrering

REST-API-ene for Git-integrering kan hjelpe deg med å oppnå kontinuerlig integrering og kontinuerlig levering (CI/CD) av innholdet. Her er noen eksempler på hva som kan gjøres ved hjelp av API-ene:

  • Se hvilke elementer som har innkommende endringer, og hvilke elementer som har endringer som ennå ikke er forpliktet til Git med Git-status-API-en.

  • Få tilkoblingsdetaljer for det angitte arbeidsområdet.

  • Koble til og koble et bestemt arbeidsområde fra Git-repositoriet og grenen som er koblet til det.

  • Oppdater git-legitimasjonen min for å oppdatere konfigurasjonsdetaljene for Git-legitimasjonen.

  • Få git-legitimasjonen min for å få konfigurasjonsdetaljene for Git-legitimasjonen.

  • Initialiser en tilkobling for et arbeidsområde som er koblet til Git.

  • Utfør endringene som er gjort i arbeidsområdet, til den tilkoblede eksterne grenen.

  • Oppdater arbeidsområdet med utføringer som er sendt til den tilkoblede grenen.

Eksempler

Bruk følgende PowerShell-skript til å forstå hvordan du utfører flere vanlige automatiseringsprosesser. Hvis du vil vise eller kopiere teksten i et PowerShell-eksempel, bruker du koblingene i denne inndelingen. Du kan også se alle eksemplene i Git-integreringseksemplet for Fabric GitHub.

Koble til og oppdatere

Denne delen beskriver trinnene som er involvert i å koble til og oppdatere et arbeidsområde med Git.

Hvis du vil ha det fullstendige skriptet, kan du se Koble til og oppdatere fra Git.

  1. Logg på og få tilgangstoken – Logg på Fabric som bruker (ikke tjenestekontohaver). Bruk kommandoen Connect-AzAccount til å logge på. Hvis du vil ha et tilgangstoken, bruker du kommandoen Get-AzAccessToken .

    Koden skal se omtrent slik ut:

    $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. Kall tilkoblings-API-en for å koble arbeidsområdet til et Git-repositorium og en 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. Kall initialiser tilkoblings-API-en for å initialisere tilkoblingen mellom arbeidsområdet og Git-repositoriet/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. Basert på svaret fra API-en for Initialiser tilkobling, kan du kalle enten Oppdater fra Git-API-en for å fullføre oppdateringen, eller ikke gjøre noe hvis det ikke kreves noen handling.

    Følgende skript oppdaterer og overvåker fremdriften:

    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"))
    }
    

Oppdater fra Git

I denne delen beskriver vi trinnene som er involvert i å oppdatere et arbeidsområde med endringene fra Git. I dette skriptet oppdaterer vi arbeidsområdeelementene med endringer fra Git, men vi lar Git-repositoriet være uendret.

Hvis du vil ha det fullstendige skriptet, kan du se Oppdatere arbeidsområde fra Git.

  1. Logg på Git, og få godkjenning.
  2. Kall Hent status-API-en for å bygge oppdateringen fra git-forespørselsteksten.
  3. Kall Oppdater fra Git-API-en for å oppdatere arbeidsområdet med utføringer sendt til den tilkoblede grenen.

Utfør alle

Denne delen gir en trinnvis beskrivelse av hvordan du programmatisk utfører alle endringer fra arbeidsområdet til Git.

Hvis du vil ha hele skriptet, kan du se Utføre alle endringer i Git.

  1. Logg på Git, og få godkjenning.
  2. Koble til arbeidsområde.
  3. Kall utføringen til GIT REST-API-en.
  4. Få operasjons-ID for lang kjøring for å finne statusen for operasjonen.

Selektiv utføring

Denne delen beskriver trinnene som er involvert i å utføre bare spesifikke endringer fra arbeidsområdet til Git.

Hvis du vil ha det fullstendige skriptet, kan du se Utføre valg av endringer i Git.

  1. Logg på Git, og få godkjenning.
  2. Koble til arbeidsområde.
  3. Kall hent status-API-en for å se hvilke elementer arbeidsområdet ble endret.
  4. Velg de bestemte elementene som skal utføres.
  5. Kall Utfør til Git-API-en for å utføre de valgte endringene fra arbeidsområdet til den tilkoblede eksterne grenen.

Overvåk fremdriften for operasjoner som kjører lenge

Hvis du vil se hele skriptet, kan du se Avspørr en langvarig operasjon.

  1. Hent operationId fra Update From Git eller Commit to Git-skriptet .
  2. Kall API-en Hent LRO-status med angitte intervaller (i sekunder), og skriv ut statusen.

Hensyn og begrensninger

  • Git-integrering ved hjelp av API-er er underlagt de samme begrensningene som brukergrensesnittet for Git-integrering.
  • Tjenestekontohaver støttes ikke.
  • Oppdatering av en semantisk modell ved hjelp av API-en for forbedret oppdatering forårsaker en Git-diff etter hver oppdatering.