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:
Los mismos requisitos previos para usar la integración de Git en la interfaz de usuario.
Un token de Microsoft Entra para el servicio Fabric. Usa ese token en el encabezado de autorización de la llamada API. Para obtener información sobre cómo obtener un token, consulta Inicio rápido de Fabric API.
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:
- Instale PowerShell.
- Instale el módulo Az de Azure PowerShell.
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:
Consulta qué elementos tienen cambios entrantes y qué elementos tienen cambios que aún no se han confirmado en Git con la API de Estado de Git.
Obtén los detalles de conexión del área de trabajo especificada.
Conecta y desconecta un área de trabajo específica del repositorio de Git y la rama conectadas a él.
Actualizar mis credenciales de Git para actualizar los detalles de configuración de las credenciales de Git.
Obtener mis credenciales de Git para obtener los detalles de configuración de las credenciales de Git.
Inicialice una conexión para un área de trabajo que se ha conectado a Git.
Confirma los cambios realizados en el área de trabajo en la rama remota conectada.
Actualiza el área de trabajo con confirmaciones insertadas en la rama conectada.
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.
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 } }
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
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 "{}"
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.
- Inicie sesión en Git y obtenga la autenticación.
- Llama a la API Obtener estado para compilar la actualización desde el cuerpo de la solicitud de Git.
- 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.
- Inicie sesión en Git y obtenga la autenticación.
- Conéctate al área de trabajo.
- Llame a la API de REST Confirmar en Git.
- 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.
- Inicie sesión en Git y obtenga la autenticación.
- Conéctate al área de trabajo.
- Llama a la API Obtener estado para ver qué áreas de trabajo se cambiaron.
- Selecciona los elementos concretos que deseas confirmar.
- 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.
- Recupere el operationId de los scripts Actualizar desde Git o Confirmar en Git.
- 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.