Udostępnij za pośrednictwem


Automatyzowanie integracji z usługą Git przy użyciu interfejsów API

Narzędzie integracji z usługą Microsoft Fabric Git umożliwia zespołom pracę ze sobą przy użyciu kontroli źródła w celu utworzenia wydajnego i wielokrotnego użytku procesu wydawania zawartości sieci Szkieletowej.

Za pomocą interfejsów API REST usługi Microsoft Fabric można zautomatyzować procedury i procesy sieci szkieletowej, aby wykonywać zadania szybciej i z mniejszą liczbą błędów. Ta wydajność prowadzi do oszczędności kosztów i poprawy wydajności.

W tym artykule opisano sposób używania interfejsów API REST integracji z usługą Git do automatyzowania integracji z usługą Git w usłudze Microsoft Fabric.

Wymagania wstępne

Do pracy z interfejsami API git sieci szkieletowej potrzebne są następujące elementy:

Interfejsy API REST można używać bez programu PowerShell, ale skrypty w tym artykule używają programu PowerShell. Aby uruchomić skrypty, należy wykonać następujące czynności:

Funkcje interfejsu API integracji usługi Git

Interfejsy API REST integracji z usługą Git mogą pomóc w osiągnięciu ciągłej integracji i ciągłego dostarczania (CI/CD) zawartości. Oto kilka przykładów tego, co można zrobić przy użyciu interfejsów API:

Przykłady

Skorzystaj z poniższych skryptów programu PowerShell, aby dowiedzieć się, jak wykonywać kilka typowych procesów automatyzacji. Aby wyświetlić lub skopiować tekst w przykładzie programu PowerShell, użyj linków w tej sekcji. Wszystkie przykłady można również zobaczyć w repozytorium GitHub przykładów integracji z usługą Git Fabric.

Łączenie i aktualizowanie

W tej sekcji opisano kroki związane z nawiązywaniem połączenia i aktualizowaniem obszaru roboczego za pomocą usługi Git.

Aby uzyskać pełny skrypt, zobacz Connect and update from Git (Łączenie i aktualizowanie z usługi Git).

  1. Zaloguj się i uzyskaj token dostępu — zaloguj się do sieci szkieletowej jako użytkownik (a nie jednostka usługi). Zaloguj się za pomocą polecenia Connect-AzAccount . Aby uzyskać token dostępu, użyj polecenia Get-AzAccessToken .

    Kod powinien wyglądać mniej więcej tak:

    $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. Wywołaj interfejs API Łączenia , aby połączyć obszar roboczy z repozytorium Git i gałęzią.

    
    # 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. Wywołaj interfejs API inicjowania połączenia , aby zainicjować połączenie między obszarem roboczym a repozytorium/gałęzią Git.

     # 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. Na podstawie odpowiedzi z interfejsu API inicjowania połączenia wywołaj interfejs API aktualizacji z usługi Git , aby ukończyć aktualizację, lub nie wykonaj żadnych czynności, jeśli nie są wymagane żadne działania.

    Następujący skrypt aktualizuje i monitoruje postęp:

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

Aktualizacja z usługi Git

W tej sekcji opisano kroki związane z aktualizowaniem obszaru roboczego za pomocą zmian z usługi Git. W tym skrypsie zaktualizujemy elementy obszaru roboczego ze zmianami z usługi Git, ale pozostawimy repozytorium Git bez zmian.

Aby uzyskać pełny skrypt, zobacz Aktualizowanie obszaru roboczego z usługi Git.

  1. Zaloguj się do usługi Git i uzyskaj uwierzytelnianie.
  2. Wywołaj interfejs API pobierania stanu , aby skompilować aktualizację z treści żądania Git.
  3. Wywołaj interfejs API aktualizacji z usługi Git , aby zaktualizować obszar roboczy za pomocą zatwierdzeń wypchniętych do połączonej gałęzi.

Zatwierdź wszystko

Ta sekcja zawiera szczegółowy opis sposobu programowego zatwierdzania wszystkich zmian z obszaru roboczego do usługi Git.

Aby uzyskać pełny skrypt, zobacz Commit all changes to Git (Zatwierdź wszystkie zmiany w usłudze Git).

  1. Zaloguj się do usługi Git i uzyskaj uwierzytelnianie.
  2. Połącz się z obszarem roboczym.
  3. Wywołaj zatwierdzenie do interfejsu API REST usługi Git .
  4. Pobierz identyfikator OperationId long running na potrzeby sondowania stanu operacji.

Zatwierdzanie selektywne

W tej sekcji opisano kroki związane z zatwierdzaniem tylko określonych zmian z obszaru roboczego do usługi Git.

Aby uzyskać pełny skrypt, zobacz Commit select changes to Git (Zatwierdź zmiany w usłudze Git).

  1. Zaloguj się do usługi Git i uzyskaj uwierzytelnianie.
  2. Połącz się z obszarem roboczym.
  3. Wywołaj interfejs API Pobierania stanu, aby zobaczyć, które elementy obszaru roboczego zostały zmienione.
  4. Wybierz określone elementy do zatwierdzenia.
  5. Wywołaj zatwierdzenie do interfejsu API usługi Git , aby zatwierdzić wybrane zmiany z obszaru roboczego do połączonej gałęzi zdalnej.

Monitorowanie postępu długotrwałych operacji

Aby uzyskać pełny skrypt, zobacz Sonduj długotrwałą operację.

  1. Pobierz identyfikator operationId ze skryptu Update From Git lub Commit to Git (Zatwierdzanie do usługi Git ).
  2. Wywołaj interfejs API pobierania stanu LRO w określonych interwałach (w sekundach) i wyświetl stan.

Rozważania i ograniczenia