Compartir a través de


Automatización de la integración de Git mediante API

La herramienta de integración de Git de Microsoft Fabric permite a los equipos trabajar juntos utilizando el control de código fuente para crear un proceso de versión eficaz y reutilizable para tu contenido de Fabric.

Con las API de REST de Microsoft Fabric, puedes automatizar los procedimientos y procesos de Fabric para completar tareas más rápido y con menos errores. Esta eficiencia lleva a un ahorro de costos y mejora de la productividad.

En este artículo se describe cómo usar las API de REST de integración de Git para automatizar la integración de Git en Microsoft Fabric.

Requisitos previos

Para trabajar con las API de Git de Fabric, necesita lo siguiente:

Puedes usar las API de REST sin PowerShell, pero los scripts de este artículo usan PowerShell. Para ejecutar los scripts, debe realizar los siguientes pasos:

Funciones de API de integración de Git

Las API de REST de integración de Git pueden ayudarte a lograr la integración continua y la entrega continua (CI/CD) del contenido. Estos son algunos ejemplos de lo que se puede hacer mediante las API:

Ejemplos

Usa los siguientes scripts de PowerShell para comprender cómo realizar varios procesos de automatización habituales. Para ver o copiar el texto en un ejemplo de PowerShell, use los vínculos de esta sección. También puedes ver todos los ejemplos en el repositorio de GitHub de ejemplos de integración de Git de Fabric.

Conexión y actualización

En esta sección se describen los pasos necesarios para conectar y actualizar un área de trabajo con Git.

Para obtener el script completo, consulte Conectar y actualizar desde Git.

  1. Iniciar sesión y obtener el token de acceso: inicia sesión en Fabric como usuario (no como una entidad de servicio). Para iniciar sesión, usa el comando Connect-AzAccount. Para obtener un token de acceso, usa el comando Get-AzAccessToken.

    El código debería tener este aspecto:

    $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. Llama a la API Conectar para conectar el área de trabajo a un repositorio y una rama de 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. Llame a la API Inicializar conexión para inicializar la conexión entre el área de trabajo y el repositorio o la rama de 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 función de la respuesta de la API Inicializar conexión, llame a la API Actualizar desde Git para completar la actualización o no haga nada si no se requiere ninguna acción.

    El siguiente script actualiza y supervisa el progreso:

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

Actualización desde Git

En esta sección, se describen los pasos necesarios para actualizar un área de trabajo con los cambios de Git. En este script, se actualizan los elementos del área de trabajo con cambios de Git, pero se deja sin cambios en el repositorio de Git.

Para obtener el script completo, consulte Actualización del área de trabajo desde Git.

  1. Inicie sesión en Git y obtenga la autenticación.
  2. Llama a la API Obtener estado para compilar la actualización desde el cuerpo de la solicitud de Git.
  3. Llama a la API Actualizar desde Git para actualizar el área de trabajo con confirmaciones insertadas en la rama conectada.

Confirmar todo

En esta sección se proporciona una descripción paso a paso de cómo confirmar mediante programación todos los cambios del área de trabajo a Git.

Para obtener el script completo, consulte Confirmar todos los cambios en Git.

  1. Inicie sesión en Git y obtenga la autenticación.
  2. Conéctate al área de trabajo.
  3. Llame a la API de REST Confirmar en Git.
  4. Obtén el OperationId de larga duración para sondear el estado de la operación.

Confirmación selectiva

En esta sección se describen los pasos necesarios para confirmar solo cambios específicos del área de trabajo a Git.

Para obtener el script completo, consulte Confirmar cambios selectivos en Git.

  1. Inicie sesión en Git y obtenga la autenticación.
  2. Conéctate al área de trabajo.
  3. Llama a la API Obtener estado para ver qué áreas de trabajo se cambiaron.
  4. Selecciona los elementos concretos que deseas confirmar.
  5. Llama a la API Confirmar en Git para confirmar los cambios seleccionados del área de trabajo en la rama remota conectada.

Supervisión del progreso de las operaciones de larga duración

Para obtener el script completo, consulte Sondeo de una operación de larga duración.

  1. Recupere el operationId de los scripts Actualizar desde Git o Confirmar en Git.
  2. Llame a la API Obtener estado de LRO a intervalos especificados (en segundos) e imprima el estado.

Consideraciones y limitaciones

  • La integración de Git mediante las API está sujeta a las mismas limitaciones que la interfaz de usuario de integración de Git.
  • La entidad de servicio no se admite.
  • La actualización de un modelo semántico mediante la API de actualización mejorada provoca una diferencia de Git después de cada actualización.