Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Lo strumento di integrazione Git di Microsoft Fabric consente ai team di collaborare usando il controllo del codice sorgente per creare un processo di rilascio efficiente e riutilizzabile per il contenuto di Fabric.
Con le API REST di Microsoft Fabric, è possibile automatizzare le procedure e i processi di Fabric per completare le attività più velocemente e con un minor numero di errori. Questa efficienza comporta risparmi sui costi e una maggiore produttività.
Questo articolo descrive come usare le API REST di integrazione Git per automatizzare l'integrazione Git in Microsoft Fabric.
Prerequisites
Per lavorare con le API Git di Fabric, è necessario disporre di:
Gli stessi prerequisiti necessari per usare l'integrazione Git nell'interfaccia utente.
Un token Microsoft Entra per il servizio Fabric. Usare tale token nell'intestazione dell'autorizzazione della chiamata API. Per informazioni su come ottenere un token, vedere Avvio rapido dell'API di Fabric.
Se si utilizza un'entità servizio, essa necessita delle stesse autorizzazioni di un'entità utente. Per configurare un principale del servizio per Azure DevOps, vedere Integrazione Git con il principale del servizio.
È possibile usare le API REST senza PowerShell, ma gli script in questo articolo usano PowerShell. Per eseguire gli script, seguire questa procedura:
- Installare PowerShell.
- Installare il modulo Az di Azure PowerShell.
Funzioni dell'API di integrazione Git
Le API REST di integrazione Git consentono di ottenere integrazione continua e recapito continuo (CI/CD) del contenuto. Ecco alcuni esempi di operazioni che possono essere eseguite usando le API:
Connettere e disconnettere un'area di lavoro specifica dal repository Git e dal ramo connesso. La connessione richiede il connectionId delle credenziali del provider Git.
Ottenere i dettagli di connessione per l'area di lavoro specificata.
Ottenere o creare una connessione alle credenziali del provider Git.
Aggiorna le mie credenziali Git per aggiornare i dettagli di configurazione delle tue credenziali Git. Richiede il connectionId delle credenziali del provider Git.
Ottieni le mie credenziali Git per ottenere i dettagli di configurazione delle tue credenziali Git.
Inizializzare una connessione per un'area di lavoro connessa a Git.
Vedere quali elementi hanno modifiche in ingresso e quali elementi hanno modifiche che non sono ancora state sottoposte a commit in Git con l'API di stato Git.
Effettuare il commit delle modifiche apportate nell'area di lavoro al ramo remoto connesso.
Aggiorna l'area di lavoro con i commit inviati al ramo connesso.
Examples
Usare gli script di PowerShell seguenti per comprendere come eseguire diversi processi di automazione comuni. Per visualizzare o copiare il testo in un esempio di PowerShell, usare i collegamenti in questa sezione. È anche possibile vedere tutti gli esempi nel repository GitHub degli esempi di integrazione Git di Fabric.
Connettersi e aggiornare
Questa sezione descrive i passaggi necessari per la connessione e l'aggiornamento di un'area di lavoro con Git.
Per lo script completo, vedere Connettersi e aggiornare da Git. (La compatibilità degli script è PowerShell 5.1)
Connettersi all'account Azure e ottenere il token di accesso : accedere a Fabric come utente o entità servizio. Usare il comando Connect-AzAccount per connettersi. Per ottenere un token di accesso, usare il comando Get-AzAccessToken e convertire il token di stringa sicura in testo normale
Il codice dovrebbe essere simile al seguente:
$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 } }Chiamare l'API Connetti per connettere l'area di lavoro a un repository Git e a un ramo. (potrebbe essere necessario creare prima una connessione )
Per informazioni su come ottenere i dettagli della connessione (ID, nome), vedere Ottenere o creare una connessione alle credenziali del provider 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 $connectToGitBodyChiamare l'API Inizializza connessione per inizializzare la connessione tra l'area di lavoro e il repository/ramo 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 "{}"In base alla risposta dell'API Di inizializzazione connessione, chiamare l'API Update From Git per completare l'aggiornamento o non eseguire alcuna operazione se non è necessaria alcuna azione.
Lo script seguente aggiorna e monitora lo stato di avanzamento:
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")) }
Aggiornare da Git
In questa sezione, vengono descritti i passaggi necessari per aggiornare un'area di lavoro con le modifiche apportate da Git. In questo script, gli elementi dell'area di lavoro vengono aggiornati con le modifiche da Git, ma il repository Git rimane invariato.
Per lo script completo, vedere Aggiornare l'area di lavoro da Git.
- Accedere a Git e ottenere l'autenticazione.
- Chiamare l'API Ottieni stato per compilare l'aggiornamento dal corpo della richiesta Git.
- Chiamare l'API Aggiorna da Git per aggiornare l'area di lavoro con i commit inviati al ramo connesso.
Esegui il commit di tutte le modifiche
Questa sezione fornisce una descrizione dettagliata di come eseguire il commit a livello di codice di tutte le modifiche dall'area di lavoro a Git.
Per lo script completo, vedere Eseguire il commit di tutte le modifiche in Git.
- Accedere a Git e ottenere l'autenticazione.
- Connettersi all'area di lavoro.
- Chiama l'API REST Commit to Git.
- Ottenere l'OperationId a lunga esecuzione per monitorare lo stato dell'operazione.
Commit selettivo
Questa sezione descrive i passaggi necessari per eseguire il commit solo di modifiche specifiche dall'area di lavoro a Git.
Per lo script completo, vedere Eseguire il commit di modifiche selezionate in Git.
- Accedere a Git e ottenere l'autenticazione.
- Connettersi all'area di lavoro.
- Chiamare l'API Ottieni stato per vedere quali elementi delle aree di lavoro sono stati modificati.
- Selezionare gli elementi specifici da confermare.
- Chiamare l'API Commit in Git per eseguire il commit delle modifiche selezionate dall'area di lavoro al ramo remoto connesso.
Monitorare lo stato di avanzamento delle operazioni a esecuzione prolungata
Per lo script completo, vedere Eseguire il polling di un'operazione a esecuzione prolungata.
- Recuperare l'operationId dallo script Aggiorna da Git o dallo script Commit su Git.
- Chiamare l'API Get LRO Status a intervalli specificati (in secondi) e stampare lo stato.
Ottenere o creare una connessione alle credenziali del provider Git
Per connettersi a un repository Git o aggiornare le credenziali Git , è necessario fornire un connectionId. ConnectionId può provenire da una nuova connessione creata o da una connessione esistente.
- Creare una nuova connessione con le credenziali del provider Git
- Usare una connessione esistente per cui si dispone delle autorizzazioni.
Creare una nuova connessione che archivia le credenziali Git
Il frammento di codice seguente mostra un corpo di richiesta di esempio per creare una connessione che archivia le credenziali di Azure DevOps. L'esempio completo è disponibile nel repository degli esempi di 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)
Esempio di richiesta
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>”
}
}
}
Risposta di esempio:
{
"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
}
}
Ottenere un elenco di connessioni esistenti
Usare l'API Elenca connessioni per ottenere un elenco di connessioni esistenti per cui si dispone delle autorizzazioni e delle relative proprietà.
Esempio di richiesta
GET https://api.fabric.microsoft.com/v1/connections
Risposta di esempio
{
"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
}
}
]
}
Copiare l'ID della connessione desiderata e usarlo nell'API Git - Connect o Git - Update My Git Credentials (Aggiornare le credenziali Git personali ).
Considerazioni e limitazioni
- L'integrazione Git con le API è soggetta alle stesse limitazioni dell'interfaccia utente dell'integrazione Git.
- L'aggiornamento di un modello semantico tramite l'API Aggiornamento avanzato causa una differenza di Git dopo ogni aggiornamento.