Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Microsoft Fabric Git-integrationsværktøjet gør det muligt for teams at arbejde sammen ved hjælp af kildekontrol for at opbygge en effektiv og genanvendelig udgivelsesproces for deres Fabric-indhold.
Med Microsoft Fabric REST API'er kan du automatisere Fabric-procedurer og -processer for at udføre opgaver hurtigere og med færre fejl. Denne effektivitet medfører omkostningsbesparelser og forbedret produktivitet.
I denne artikel beskrives det, hvordan du bruger REST API'er til Git-integration til at automatisere Git-integration i Microsoft Fabric.
Prerequisites
Hvis du vil arbejde med Fabric Git-API'er, skal du bruge:
De samme forudsætninger, du skal bruge for at bruge Git-integration i brugergrænsefladen.
Et Microsoft Entra-token til Fabric-tjenesten. Brug dette token i godkendelsesheaderen for API-kaldet. Du kan få oplysninger om, hvordan du får et token, under Hurtig start af Fabric API.
Hvis du bruger en service principal, kræver den de samme rettigheder som en user principal. For at opsætte en serviceprincipal til Azure DevOps, se Git-integration med service principal.
Du kan bruge REST-API'erne uden PowerShell, men scripts i denne artikel bruger PowerShell. Hvis du vil køre scripts, skal du benytte følgende fremgangsmåde:
- Installer PowerShell.
- Installér Azure PowerShell Az-modulet.
API-funktioner til Git-integration
REST API'er til Git-integration kan hjælpe dig med at opnå kontinuerlig integration og kontinuerlig levering (CI/CD) af dit indhold. Her er nogle eksempler på, hvad der kan gøres ved hjælp af API'erne:
Opret forbindelse til og afbryd forbindelsen til et bestemt arbejdsområde fra Git-lageret og den gren, der er forbundet til det. (Opret forbindelse kræver connectionId for Git-udbyderens legitimationsoplysninger).
Hent forbindelsesoplysninger for det angivne arbejdsområde.
Hent eller opret forbindelse til Git-udbyderens legitimationsoplysninger.
Opdater mine Git-legitimationsoplysninger for at opdatere konfigurationsoplysningerne for dine Git-legitimationsoplysninger. Kræver connectionId for legitimationsoplysningerne for Git-udbyderen.
Hent mine Git-legitimationsoplysninger for at få konfigurationsoplysninger om dine Git-legitimationsoplysninger.
Initialiser en forbindelse for et arbejdsområde, der er forbundet til Git.
Se, hvilke elementer der har indgående ændringer, og hvilke elementer der har ændringer, der endnu ikke er bekræftet i Git, med Git-status-API'en .
Bekræfte de ændringer, der er foretaget i arbejdsområdet, til den tilsluttede fjerngren.
Opdater arbejdsområdet med bekræftelser, der er pushet til den forbundne forgrening.
Examples
Brug følgende PowerShell-scripts til at forstå, hvordan du udfører flere almindelige automatiseringsprocesser. Hvis du vil have vist eller kopiere teksten i et PowerShell-eksempel, skal du bruge linkene i dette afsnit. Du kan også se alle eksemplerne i GitHub-lageret med Fabric Git-integrationseksempler .
Opret forbindelse, og opdater
I dette afsnit beskrives de trin, der er involveret i at oprette forbindelse til og opdatere et arbejdsområde med Git.
Du kan se hele scriptet under Opret forbindelse og opdater fra Git. (Scriptkompatibiliteten er PowerShell 5.1)
Forbind til Azure-konto og få adgangstoken - Log ind på Fabric som bruger eller service principal. Brug kommandoen Connect-AzAccount til at oprette forbindelse. Hvis du vil have et adgangstoken, skal du bruge kommandoen Get-AzAccessToken og konvertere sikkerhedsstrengtokenet til almindelig tekst
Din kode bør se nogenlunde sådan ud:
- Brugerens hovedstol
-
tjenesteprincipal
$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 } }Kald Connect-API'en for at oprette forbindelse mellem arbejdsområdet og et Git-lager og en Git-forgrening. (du skal muligvis oprette en forbindelse først)
For information om, hvordan du får forbindelsesdetaljer (ID, Navn), se Get or create Git provider credentials connection.
$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 $connectToGitBodyKald API'en Initialiser forbindelse for at initialisere forbindelsen mellem arbejdsområdet og Git-lageret/-forgreningen.
# 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 "{}"Baseret på svaret fra API'en til initialisering af forbindelse skal du enten kalde API'en Opdater fra Git for at fuldføre opdateringen eller foretage dig noget, hvis der ikke kræves nogen handling.
Følgende script opdaterer og overvåger status:
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")) }
Opdatering fra Git
I dette afsnit beskriver vi de trin, der er involveret i opdatering af et arbejdsområde med ændringerne fra Git. I dette script opdaterer vi elementerne i arbejdsområdet med ændringer fra Git, men vi lader Git-lageret være uændret.
Du kan se hele scriptet under Opdater arbejdsområde fra Git.
- Log på Git, og hent godkendelse.
- Kald API'en Hent status for at oprette opdateringen fra Git-anmodningsteksten.
- Kald Api'en Opdater fra Git for at opdatere arbejdsområdet med bekræftelser, der er pushet til den forbundne forgrening.
Commit alle
Dette afsnit indeholder en trinvis beskrivelse af, hvordan du programmatisk kan bekræfte alle ændringer fra arbejdsområdet til Git.
Du kan se hele scriptet under Bekræft alle ændringer i Git.
- Log på Git, og hent godkendelse.
- Opret forbindelse til arbejdsområdet.
- Kald API'en Commit to Git REST.
- Hent Long Running OperationId for at forespørge om status for handlingen.
Selektiv commit
I dette afsnit beskrives de trin, der er involveret i kun at foretage bestemte ændringer fra arbejdsområdet til Git.
Du kan se hele scriptet under Bekræft valg af ændringer til Git.
- Log på Git, og hent godkendelse.
- Opret forbindelse til arbejdsområdet.
- Kald API'en Hent status for at se, hvilke elementer der er blevet ændret.
- Vælg de specifikke elementer, der skal bekræftes.
- Kald API'en Bekræft til Git for at bekræfte de valgte ændringer fra arbejdsområdet til den forbundne eksterne forgrening.
Overvåg status for langvarige handlinger
Du kan se hele scriptet under Poller en handling, der kører i lang tid.
- Hent operationId fra Update From Git eller scriptet Commit to Git .
- Kald API'en Hent LRO-status med angivne intervaller (i sekunder), og udskriv status.
Hent eller opret forbindelse til Legitimationsoplysninger for Git-udbyder
Hvis du vil oprette forbindelse til et Git-lager eller opdatere dine Git-legitimationsoplysninger, skal du angive et connectionId. connectionId kan komme fra enten en ny forbindelse, som du opretter, eller en eksisterende forbindelse.
- Opret en ny forbindelse med dine legitimationsoplysninger til Git-udbyderen
- Brug en eksisterende forbindelse, som du har tilladelser til.
Opret en ny forbindelse, der gemmer dine Git-oplysninger
Følgende kodeuddrag viser et eksempel på en anmodningskrop til at oprette en forbindelse, der gemmer dine Azure DevOps-oplysninger. Det fulde eksempel kan findes i Fabric samples-repoet.
# 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)
Eksempel på anmodning
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>”
}
}
}
Eksempel på svar:
{
"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
}
}
Hent en liste over eksisterende forbindelser
Brug API'en Listeforbindelser til at få vist en liste over eksisterende forbindelser, som du har tilladelser til, og deres egenskaber.
Eksempelanmodning
GET https://api.fabric.microsoft.com/v1/connections
Eksempelsvar
{
"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
}
}
]
}
Kopiér id'et for den ønskede forbindelse, og brug det i API'en Git – Opret forbindelse eller Git – Opdater Mine Git-legitimationsoplysninger .
Overvejelser og begrænsninger
- Git-integration ved hjælp af API'er er underlagt de samme begrænsninger som Git-integrationsbrugergrænsefladen.
- Opdatering af en semantisk model ved hjælp af API'en for udvidet opdatering medfører en Git-diff efter hver opdatering.