Partager via


Automatisation de l’intégration de Git à l’aide d’API

L’outil d’intégration Git de Microsoft Fabric permet aux équipes de travailler ensemble en utilisant le contrôle de code source pour créer un processus de publication efficace et réutilisable pour leur contenu Fabric.

Avec les API REST de Microsoft Fabric, vous pouvez automatiser les procédures et les processus Fabric afin d’accomplir les tâches plus rapidement et avec moins d’erreurs. Cette efficacité permet de réduire les coûts et d’améliorer la productivité.

Cet article explique comment utiliser les API REST d’intégration Git pour automatiser l’intégration Git dans Microsoft Fabric.

Prérequis

Pour travailler avec les API Git Fabric, vous avez besoin de :

Vous pouvez utiliser les API REST sans PowerShell, mais les scripts de cet article utilisent PowerShell. Pour exécuter les scripts, vous devez suivre les étapes suivantes :

Fonctions API d’intégration Git

Les API REST d’intégration Git peuvent vous aider à réaliser l’intégration continue et la livraison continue (CI/CD) de votre contenu. Voici quelques exemples de ce qu’il est possible de faire en utilisant les API :

Exemples

Utilisez les scripts PowerShell suivants pour comprendre comment exécuter plusieurs processus d’automatisation. Pour visualiser ou copier le texte d’un exemple PowerShell, utilisez les liens fournis dans cette section. Vous pouvez également voir tous les exemples dans le référentiel GitHub Exemples d’intégration de Git Fabric.

Se connecter et mettre à jour

Cette section décrit les étapes de la connexion et de la mise à jour d’un espace de travail avec Git.

Pour obtenir le script complet, consultez Se connecter et mettre à jour à partir de Git.

  1. Se connecter et obtenir un jeton d’accès – Connectez-vous à Fabric en tant qu’utilisateur (et non en tant que principal de service). Utilisez la commande Connect-AzAccount pour vous connecter. Pour obtenir un jeton d’accès, utilisez la commande Get-AzAccessToken.

    Votre code doit ressembler à ceci :

    $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. Appelez l’API Connect pour connecter l’espace de travail à un référentiel et une branche Git.

    
    # 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. Appelez l’API Initialize Connection pour initialiser la connexion entre l’espace de travail et le référentiel/branche 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. En fonction de la réponse de l’API Initialize Connection, appelez l’API Update From Git pour terminer la synchronisation, ou ne faites rien si aucune action n’est requise.

    Le script suivant met à jour et surveille la progression :

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

Mettre à jour à partir de Git

Dans cette section, nous décrivons les étapes de la mise à jour d’un espace de travail avec les modifications de Git. Dans ce script, nous mettons à jour les éléments de l’espace de travail avec les modifications de Git, mais nous laissons le référentiel Git inchangé.

Pour obtenir le script complet, consultez Mettre à jour l’espace de travail à partir de Git.

  1. Connectez-vous à Git et obtenez l’authentification.
  2. Appelez l’API Get Status pour générer la mise à jour depuis le corps de la demande Git.
  3. Appelez l’API Update From Git pour mettre à jour l’espace de travail avec les validations envoyées à la branche connectée.

Valider tout

Cette section fournit une description étape par étape de la validation programmatique de toutes les modifications de l’espace de travail vers Git.

Pour obtenir le script complet, consultez Commiter toutes les modifications apportées à Git.

  1. Connectez-vous à Git et obtenez l’authentification.
  2. Connectez-vous à l’espace de travail.
  3. Appelez l’API REST Commit to Git.
  4. Obtenez l’OperationId durable pour connaître l’état de l’opération.

Validation sélective

Cette section, nous décrit les étapes à suivre pour valider uniquement des modifications spécifiques de l’espace de travail vers Git.

Pour le script complet, consultez Valider les modifications sélectionnées vers Git.

  1. Connectez-vous à Git et obtenez l’authentification.
  2. Connectez-vous à l’espace de travail.
  3. Appelez l’API Get status pour voir quels éléments de l’espace de travail ont été modifiés.
  4. Sélectionnez les éléments spécifiques à valider.
  5. Appelez l’API Commit To Git pour valider les modifications sélectionnées de l’espace de travail vers la branche distante connectée.

Surveillance de l’état d’avancement des opérations durables

Pour obtenir le script complet, consultez Interroger une opération durable.

  1. Récupérez l’OperationId des scripts à partir de Update From Git ou Commit To Git.
  2. Appelez l’API Obtenir l’état LRO à intervalles spécifiés (en secondes) et imprimez l’état.

Observations et limitations

  • L’intégration Git à l’aide d’API est soumise aux mêmes limitations que l’interface utilisateur de l’intégration Git.
  • Le principal de service n’est pas pris en charge.
  • L’actualisation d’un modèle sémantique en utilisant l’API Actualisation améliorée provoque une différence Git après chaque actualisation.