Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Nástroj pro integraci Git v Microsoft Fabric umožňuje týmům spolupracovat pomocí správy zdrojového kódu k vytvoření efektivního a znovu použitelného vydávacího procesu pro jejich obsah ve Fabricu.
Pomocí rozhraní REST API Microsoft Fabric můžete automatizovat postupy a procesy infrastruktury, abyste mohli provádět úkoly rychleji a s menším počtem chyb. Tato efektivita vede k úsporám nákladů a vyšší produktivitě.
Tento článek popisuje, jak pomocí rozhraní REST API integrace Gitu automatizovat integraci Gitu v Microsoft Fabric.
Prerequisites
Pokud chcete pracovat s rozhraními API Gitu pro Fabric, potřebujete:
Stejné požadavky, které potřebujete pro použití integrace Gitu v uživatelském rozhraní.
Token Microsoft Entra pro službu Fabric. Tento token použijte v autorizační hlavičce volání rozhraní API. Pro informace o tom, jak získat token, se podívejte do příručky pro rychlý začátek Fabric API.
Pokud používáte instanční objekt, potřebuje stejná oprávnění jako uživatelský objekt. Informace o nastavení instančního objektu pro Azure DevOps najdete v tématu Integrace Gitu s instančním objektem.
Rozhraní REST API můžete použít bez PowerShellu, ale skripty v tomto článku používají PowerShell. Pokud chcete skripty spustit, proveďte následující kroky:
- Nainstalujte PowerShell.
- Nainstalujte modul Az Azure PowerShellu.
Funkce rozhraní API pro integraci Gitu
Rozhraní REST API pro integraci Gitu vám mohou pomoci dosáhnout kontinuální integrace a doručování (CI/CD) vašeho obsahu. Tady je několik příkladů toho, co je možné provést pomocí rozhraní API:
Připojte a odpojte konkrétní pracovní prostor od úložiště Git a větve, ke kterému je připojený. (Připojení vyžaduje identifikátor připojení přihlašovacích údajů poskytovatele Git.)
Získejte podrobnosti o připojení pro zadaný pracovní prostor.
Získejte nebo vytvořte spojení s pověřením poskytovatele Git.
Aktualizujte svoje přihlašovací údaje Gitu, aby se aktualizovaly podrobnosti konfigurace přihlašovacích údajů Gitu. Je vyžadován identifikátor připojení přihlašovacích údajů poskytovatele Git.
Získejte přihlašovací údaje Gitu, abyste získali podrobnosti o konfiguraci přihlašovacích údajů Gitu.
Inicializace připojení pro pracovní prostor připojený k Gitu
Podívejte se, které položky mají příchozí změny a které položky mají změny, které ještě nebyly potvrzeny do Gitu pomocí rozhraní API pro stav Gitu.
Potvrďte změny provedené v pracovním prostoru do připojené vzdálené větve.
Aktualizujte pracovní prostor potvrzeními nasdílenými do připojené větve.
Examples
Následující skripty PowerShellu vám pomohou pochopit, jak provádět několik běžných procesů automatizace. Pokud chcete zobrazit nebo zkopírovat text v ukázce PowerShellu, použijte odkazy v této části. Můžete se také podívat na všechny příklady v úložišti GitHub s ukázkami integrace Fabric Git.
Připojení a aktualizace
Tato část popisuje kroky spojené s připojením a aktualizací pracovního prostoru pomocí Gitu.
Úplný skript najdete v tématu Připojení a aktualizace z Gitu. (Kompatibilita skriptů je PowerShell 5.1)
Připojte se k účtu Azure a získejte přístupový token – Přihlaste se k Fabric jako uživatel nebo instanční objekt. K připojení použijte příkaz Connect-AzAccount . Pokud chcete získat přístupový token, použijte příkaz Get-AzAccessToken a převeďte token zabezpečeného řetězce na prostý text.
Váš kód by měl vypadat přibližně takto:
$global:resourceUrl = "https://api.fabric.microsoft.com" $global:fabricHeaders = @{} function SetFabricHeaders() { #Login to Azure Connect-AzAccount | Out-Null # Get authentication $secureFabricToken = (Get-AzAccessToken -AsSecureString -ResourceUrl $global:resourceUrl).Token # Convert secure string to plain test $ssPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureFabricToken) try { $fabricToken = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ssPtr) } finally { [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr) } $global:fabricHeaders = @{ 'Content-Type' = "application/json" 'Authorization' = "Bearer {0}" -f $fabricToken } }Voláním rozhraní CONNECT API připojte pracovní prostor k úložišti a větvi Gitu. (možná budete muset nejprve vytvořit připojení )
Informace o tom, jak získat podrobnosti o připojení (ID, název), najdete v části Získání nebo vytvoření připojení k přihlašovacím údajům poskytovatele Git.
$global:baseUrl = "https://api.fabric.microsoft.com/v1" $workspaceName = "<WORKSPACE NAME>" $getWorkspacesUrl = "{0}/workspaces" -f $global:baseUrl $workspaces = (Invoke-RestMethod -Headers $global:fabricHeaders -Uri $getWorkspacesUrl -Method GET).value # Find the workspace by display name $workspace = $workspaces | Where-Object {$_.DisplayName -eq $workspaceName} # 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 = @{} #Leave only one of the following two (delete the other one): #----------------------------------------------------------------------------------------------- # 1. Automatic (SSO) $connectToGitBody = @{ gitProviderDetails = $gitProviderDetails } | ConvertTo-Json #----------------------------------------------------------------------------------------------- # 2. ConfiguredConnection (User or service principal) # Get workspaces $connectionName = "<CONNECTION Name>" $getConnectionsUrl = "{0}/connections" -f $global:baseUrl $connections = (Invoke-RestMethod -Headers $global:fabricHeaders -Uri $getConnectionsUrl -Method GET).value # Find the connection by display name $connection = $connections | Where-Object {$_.DisplayName -eq $connectionName} $connectToGitBody = @{ gitProviderDetails = $azureDevOpsDetails myGitCredentials = @{ source = "ConfiguredConnection" connectionId = $connection.id } } | ConvertTo-Json #----------------------------------------------------------------------------------------------- Invoke-RestMethod -Headers $global:fabricHeaders -Uri $connectUrl -Method POST -Body $connectToGitBodyVoláním rozhraní API pro inicializaci připojení inicializujete připojení mezi pracovním prostorem a úložištěm nebo větví Gitu.
# 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 základě odpovědi z rozhraní API pro inicializaci připojení zavolejte buď API Aktualizovat z Gitu pro dokončení aktualizace, nebo neprovádějte žádnou akci, pokud není vyžadována.
Následující skript aktualizuje a sleduje průběh:
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")) }
Aktualizace z Gitu
V této části popisujeme kroky, které se týkají aktualizace pracovního prostoru pomocí změn z Gitu. V tomto skriptu aktualizujeme položky pracovního prostoru změnami z Gitu, ale úložiště Git ponecháme beze změny.
Úplný skript najdete v tématu Aktualizace pracovního prostoru z Gitu.
- Přihlaste se k Gitu a získejte ověřování.
- Voláním API 'Get Status' se sestaví aktualizace z těla požadavku z Gitu.
- Voláním rozhraní API Update From Git aktualizujte pracovní prostor potvrzeními nahranými do připojené větve.
Potvrdit vše
Tato část obsahuje podrobný popis toho, jak programově potvrdit všechny změny z pracovního prostoru na Git.
Úplný skript najdete v tématu Potvrzení všech změn do Gitu.
- Přihlaste se k Gitu a získejte ověřování.
- Připojte se k pracovnímu prostoru.
- Zavolejte REST API Commit to Git.
- Získejte ID operace Long Running pro dotazování stavu operace.
Selektivní komit
Tato část popisuje kroky, které se týkají potvrzení pouze konkrétních změn z pracovního prostoru do Gitu.
Úplný skript najdete v tématu Potvrzení změn v Gitu.
- Přihlaste se k Gitu a získejte ověřování.
- Připojte se k pracovnímu prostoru.
- Zavolejte rozhraní API pro získání stavu, abyste zjistili, které položky ve workspace byly změněny.
- Vyberte konkrétní položky, které chcete potvrdit.
- Voláním příkazu Commit to Git API potvrďte vybrané změny z pracovního prostoru do připojené vzdálené větve.
Monitorování průběhu dlouhotrvajících operací
Úplný skript najdete v tématu Průzkum běžící operace.
- Načtěte operationId ze skriptu Aktualizace z Git nebo Závazek ke Git.
- Zavolejte rozhraní API pro získání stavu LRO v zadaných intervalech (v sekundách) a vytiskněte stav.
Získání nebo vytvoření připojení k systému pro správu Git pomocí přihlašovacích údajů
Pokud se chcete připojit k úložišti Git nebo aktualizovat přihlašovací údaje Gitu , musíte zadat ID připojení. ID připojení může pocházet z nového připojení, které vytvoříte, nebo z existujícího připojení.
- Vytvoření nového připojení s přihlašovacími údaji zprostředkovatele Git
- Použijte existující připojení , ke kterému máte oprávnění.
Vytvoření nového připojení, které ukládá vaše přihlašovací údaje Gitu
Následující fragment kódu ukazuje ukázkový text požadavku pro vytvoření připojení, které ukládá vaše přihlašovací údaje Azure DevOps. Úplný příklad najdete v repozitáři ukázek Fabric.
# Connection with ServicePrincipal details for AzureDevOpsSourceControl
$adoSPConnection = @{
connectivityType = "ShareableCloud"
displayName = "<CONNECTION NAME>"
connectionDetails = @{
type = "AzureDevOpsSourceControl"
creationMethod = "AzureDevOpsSourceControl.Contents"
parameters = @(
@{
dataType = "Text"
name = "url"
value = "<Repo url in Azure DevOps>"
}
)
}
credentialDetails = @{
credentials = @{
credentialType = "ServicePrincipal"
tenantId = "<SP tenant (directory) id (Guid)>"
servicePrincipalClientId = "<SP APP (client) id (Guid)>"
servicePrincipalSecret = "<SP Secret>"
}
}
}
#Note: AzureDevOps for UserPrincipal is not supported (since it requires interactive OAuth2)
Ukázkový požadavek
POST https://api.fabric.microsoft.com/v1/connections
{
"displayName": "<CONNECTION NAME>",
"connectivityType": "ShareableCloud",
"connectionDetails": {
"creationMethod": "AzureDevOpsSourceControl.Contents",
"type": "AzureDevOpsSourceControl",
"parameters": [
{
"dataType": "Text",
"name": "url",
"value": "<Repo url in Azure DevOps>”
}
]
},
"credentialDetails": {
"credentials": {
"credentialType": "ServicePrincipal",
"tenantId": “<SP tenant (directory) id (Guid)>”,
"servicePrincipalClientId": “<SP APP (client) id (Guid)>”,
"servicePrincipalSecret": “<SP Secret>”
}
}
}
Ukázková odpověď:
{
"allowConnectionUsageInGateway": false,
"id": "********-****-****-****-c13b543982ac",
"displayName": "<CONNECTION NAME>",
"connectivityType": "ShareableCloud",
"connectionDetails": {
"path": "<Repo url in Azure DevOps>",
"type": "AzureDevOpsSourceControl"
},
"privacyLevel": "Organizational",
"credentialDetails": {
"credentialType": "ServicePrincipal",
"singleSignOnType": "None",
"connectionEncryption": "NotEncrypted",
"skipTestConnection": false
}
}
Získání seznamu existujících připojení
Pomocí rozhraní API seznam připojení získejte seznam existujících připojení, ke kterým máte oprávnění, a jejich vlastnosti.
Ukázkový požadavek
GET https://api.fabric.microsoft.com/v1/connections
Ukázková odpověď
{
"value": [
{
"id": "e3607d15-6b41-4d11-b8f4-57cdcb19ffc8",
"displayName": "MyGitHubPAT1",
"gatewayId": null,
"connectivityType": "ShareableCloud",
"connectionDetails": {
"path": "https://github.com",
"type": "GitHubSourceControl"
},
"privacyLevel": "Organizational",
"credentialDetails": {
"credentialType": "Key",
"singleSignOnType": "None",
"connectionEncryption": "NotEncrypted",
"skipTestConnection": false
}
},
{
"id": "3aba8f7f-d1ba-42b1-bb41-980029d5a1c1",
"displayName": "MyGitHubPAT2",
"gatewayId": null,
"connectivityType": "ShareableCloud",
"connectionDetails": {
"path": "https://github.com/OrganizationName/RepositoryName",
"type": "GitHubSourceControl"
},
"privacyLevel": "Organizational",
"credentialDetails": {
"credentialType": "Key",
"singleSignOnType": "None",
"connectionEncryption": "NotEncrypted",
"skipTestConnection": false
}
}
]
}
Zkopírujte ID požadovaného připojení a použijte ho v Gitu – Připojit nebo Git – Aktualizujte moje rozhraní API pro přihlašovací údaje Gitu .
Úvahy a omezení
- Integrace Gitu pomocí rozhraní API podléhá stejným omezením jako uživatelské rozhraní integrace Gitu.
- Aktualizace sémantického modelu pomocí rozhraní API pro vylepšenou aktualizaci způsobí Git rozdíl po každé aktualizaci.