Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.
Si usa una entidad de servicio de GitHub, necesita los mismos permisos que una entidad de seguridad de usuario.
Puede usar las API rest sin PowerShell, pero los scripts de este artículo usan PowerShell. Para ejecutar los scripts, siga estos 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:
Conecta y desconecta un área de trabajo específica del repositorio de Git y la rama conectados a él. (Connect requiere connectionId de las credenciales del proveedor de Git).
Obtén los detalles de conexión del área de trabajo especificada.
Obtenga o cree una conexión de credenciales del proveedor de Git.
Actualizar mis credenciales de Git para actualizar los detalles de configuración de las credenciales de Git. Requiere el connectionId de las credenciales del proveedor 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.
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.
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. (La compatibilidad del script es PowerShell 5.1)
Conéctese a la cuenta de Azure y obtenga el token de acceso : inicie sesión en Fabric como usuario (o, si usa GitHub, un usuario o una entidad de servicio). Use el comando Connect-AzAccount para conectarse. Para obtener un token de acceso, use el comando Get-AzAccessToken y convierta el token de cadena segura en texto sin formato.
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 $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 } }
Llama a la API Conectar para conectar el área de trabajo a un repositorio y una rama de Git. (es posible que tenga que crear una conexión( primero)
$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 = @{ 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 espacio de trabajo con cambios de Git, pero se deja sin cambios el propio 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 Get Status para crear la actualización a partir del 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.
Compromiso selectivo
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.
Obtención o creación de una conexión de credenciales del proveedor de Git
Para conectarse a un repositorio de Git o actualizar las credenciales de Git , debe proporcionar un connectionId. ConnectionId puede provenir de una nueva conexión que cree o de una conexión existente.
- Creación de una nueva conexión con las credenciales del proveedor de Git
- Use una conexión existente para la que tenga permisos.
Creación de una nueva conexión que almacene las credenciales de GitHub
Use el token de acceso personal (PAT) para crear una conexión de GitHub.
Si proporciona el nombre de un repositorio específico, la conexión se limita a ese repositorio. Si no proporciona el nombre de ningún repositorio, obtendrá acceso a todos los repositorios para los que tiene permiso.
Para crear una conexión que almacene las credenciales de GitHub, llame a la API Create connection con el siguiente cuerpo de solicitud. La sección de parámetros es opcional y solo es necesaria si desea que la conexión tenga como ámbito un repositorio específico.
Solicitud de ejemplo
POST https://api.fabric.microsoft.com/v1/connections
{
"connectivityType": "ShareableCloud",
"displayName": "MyGitHubPAT",
"connectionDetails": {
"type": "GitHubSourceControl",
"creationMethod": "GitHubSourceControl.Contents",
"parameters": [
{
"dataType": "Text",
"name": "url",
"value": "https://github.com/OrganizationName/RepositoryName"
}
]
},
"credentialDetails": {
"credentials": {
"credentialType": "Key",
"key": "*********" //Enter your GitHub Personal Access Token
}
}
}
Respuesta de ejemplo:
{
"id": "3aba8f7f-d1ba-42b1-bb41-980029d5a1c1",
"connectionDetails": {
"path": "https://github.com/OrganizationName/RepositoryName",
"type": "GitHubSourceControl"
},
"connectivityType": "ShareableCloud",
"credentialDetails": {
"connectionEncryption": "NotEncrypted",
"credentialType": "Key",
"singleSignOnType": "None",
"skipTestConnection": false
},
"displayName": "MyGitHubPAT",
"gatewayId": null,
"privacyLevel": "Organizational"
}
Copie el identificador y úselo en la API Git - Connect o Git - Update My Git Credentials (Actualizar mis credenciales de Git ).
Obtener una lista de conexiones existentes
Use Enumerar conexiones de API para obtener una lista de las conexiones existentes para las que tiene permisos y sus propiedades.
Solicitud de ejemplo
GET https://api.fabric.microsoft.com/v1/connections
Respuesta de ejemplo
{
"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
}
}
]
}
Copie el identificador de la conexión que desee y úselo en la API Git - Connect o Git - Update My Git Credentials API (Actualizar mis credenciales de Git ).
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 solo se admite para GitHub.
- 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.