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:
Token entra firmy Microsoft dla usługi Fabric. Użyj tego tokenu w nagłówku autoryzacji wywołania interfejsu API. Aby uzyskać informacje o sposobie uzyskiwania tokenu, zobacz Przewodnik Szybki start dotyczący interfejsu API sieci szkieletowej.
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:
- Zainstaluj program PowerShell.
- Zainstaluj moduł Az programu Azure PowerShell.
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:
Sprawdź, które elementy mają zmiany przychodzące i które elementy mają zmiany, które nie zostały jeszcze zatwierdzone w usłudze Git przy użyciu interfejsu API stanu usługi Git.
Pobierz szczegóły połączenia dla określonego obszaru roboczego.
Połącz i odłącz określony obszar roboczy od repozytorium Git i gałąź połączoną z nim.
Zaktualizuj moje poświadczenia git, aby zaktualizować szczegóły konfiguracji poświadczeń usługi Git.
Pobierz moje poświadczenia git, aby uzyskać szczegóły konfiguracji poświadczeń usługi Git.
Zainicjuj połączenie dla obszaru roboczego połączonego z usługą Git.
Zatwierdź zmiany wprowadzone w obszarze roboczym do połączonej gałęzi zdalnej.
Zaktualizuj obszar roboczy za pomocą zatwierdzeń wypchniętych do połączonej gałęzi.
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).
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 } }
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
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 "{}"
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.
- Zaloguj się do usługi Git i uzyskaj uwierzytelnianie.
- Wywołaj interfejs API pobierania stanu , aby skompilować aktualizację z treści żądania Git.
- 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).
- Zaloguj się do usługi Git i uzyskaj uwierzytelnianie.
- Połącz się z obszarem roboczym.
- Wywołaj zatwierdzenie do interfejsu API REST usługi Git .
- 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).
- Zaloguj się do usługi Git i uzyskaj uwierzytelnianie.
- Połącz się z obszarem roboczym.
- Wywołaj interfejs API Pobierania stanu, aby zobaczyć, które elementy obszaru roboczego zostały zmienione.
- Wybierz określone elementy do zatwierdzenia.
- 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ę.
- Pobierz identyfikator operationId ze skryptu Update From Git lub Commit to Git (Zatwierdzanie do usługi Git ).
- Wywołaj interfejs API pobierania stanu LRO w określonych interwałach (w sekundach) i wyświetl stan.
Rozważania i ograniczenia
- Integracja z usługą Git przy użyciu interfejsów API podlega tym samym ograniczeniom co interfejs użytkownika integracji z usługą Git.
- Jednostka usługi nie jest obsługiwana.
- Odświeżanie modelu semantycznego przy użyciu interfejsu API odświeżania rozszerzonego powoduje różnice w usłudze Git po każdym odświeżeniu.