Автоматизация интеграции Git с помощью API
Средство интеграции Microsoft Fabric Git позволяет командам совместно работать с помощью системы управления версиями для создания эффективного и повторно используемого процесса выпуска для содержимого Fabric.
С помощью ИНТЕРФЕЙСов REST API Microsoft Fabric можно автоматизировать процедуры и процессы Fabric для выполнения задач быстрее и с меньшим количеством ошибок. Эта эффективность приводит к экономии затрат и повышению производительности.
В этой статье описывается, как использовать REST API интеграции Git для автоматизации интеграции Git в Microsoft Fabric.
Необходимые компоненты
Чтобы работать с API-интерфейсами Git Fabric, вам потребуется:
Токен Microsoft Entra для службы Fabric. Используйте этот маркер в заголовке авторизации вызова API. Сведения о том, как получить токен, см . в кратком руководстве по API Fabric.
Интерфейсы REST API можно использовать без PowerShell, но скрипты в этой статье используют PowerShell. Чтобы запустить скрипты, необходимо выполнить следующие действия.
- Установите PowerShell.
- Установите модуль Az для Azure PowerShell.
Функции API интеграции Git
ИНТЕРФЕЙСы REST API интеграции Git помогают обеспечить непрерывную интеграцию и непрерывную доставку содержимого (CI/CD). Ниже приведены несколько примеров того, что можно сделать с помощью API:
Узнайте, какие элементы имеют входящие изменения и какие элементы имеют изменения, которые еще не были зафиксированы в Git с ПОМОЩЬЮ API состояния Git.
Получение сведений о подключении для указанной рабочей области.
Подключите и отключите определенную рабочую область из репозитория Git и ветви, подключенной к ней.
Обновите учетные данные Git, чтобы обновить сведения о конфигурации учетных данных Git.
Получите свои учетные данные Git, чтобы получить сведения о конфигурации учетных данных Git.
Инициализация подключения для рабочей области, подключенной к Git.
Зафиксируйте изменения, внесенные в рабочую область, в подключенную удаленную ветвь.
Обновите рабочую область с фиксациями, отправленными в подключенную ветвь.
Примеры
Используйте следующие сценарии PowerShell, чтобы понять, как выполнять несколько распространенных процессов автоматизации. Чтобы просмотреть или скопировать текст в примере PowerShell, используйте ссылки в этом разделе. Вы также можете просмотреть все примеры в репозитории GitHub для интеграции Fabric.
Подключение и обновление
В этом разделе описаны шаги, связанные с подключением и обновлением рабочей области с помощью Git.
Полный сценарий см. в разделе "Подключение и обновление" из Git.
Войдите и получите маркер доступа — войдите в Fabric как пользователь (а не субъект-служба). Используйте команду Connect-AzAccount для входа. Чтобы получить маркер доступа, используйте команду Get-AzAccessToken .
Код должен выглядеть следующим образом:
$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 } }
ВызовИТЕ API Connect, чтобы подключить рабочую область к репозиторию и ветви 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
Вызовите API инициализации подключения, чтобы инициализировать подключение между рабочей областью и репозиторием или ветвью 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 "{}"
В зависимости от ответа API инициализации подключения вызовите API Update From Git для завершения обновления или не выполняйте никаких действий, если никаких действий не требуется.
Следующий скрипт обновляет и отслеживает ход выполнения.
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")) }
Обновление из Git
В этом разделе описаны шаги, связанные с обновлением рабочей области с изменениями из Git. В этом скрипте мы обновляем элементы рабочей области с изменениями из Git, но не изменяем репозиторий Git.
Полный сценарий см. в разделе "Обновление рабочей области" из Git.
- Войдите в Git и получите проверку подлинности.
- Вызовите API получения состояния, чтобы создать обновление из текста запроса Git.
- Вызовите API Update From Git, чтобы обновить рабочую область с фиксациями, отправленными в подключенную ветвь.
Зафиксировать все
В этом разделе приведено пошаговое описание того, как программно зафиксировать все изменения из рабочей области в Git.
Полный скрипт см. в разделе "Фиксация всех изменений в Git".
- Войдите в Git и получите проверку подлинности.
- Подключение к рабочей области.
- Вызовите REST API фиксации для Git .
- Получите идентификатор длительной операции для опроса состояния операции.
Выборочная фиксация
В этом разделе описаны шаги, связанные с фиксацией только определенных изменений из рабочей области в Git.
Полный сценарий см. в разделе "Фиксация" выбора изменений в Git.
- Войдите в Git и получите проверку подлинности.
- Подключение к рабочей области.
- Вызовите API состояния Get, чтобы узнать, какая рабочая область элементов была изменена.
- Выберите определенные элементы для фиксации.
- Вызовите API Фиксации в Git , чтобы зафиксировать выбранные изменения из рабочей области в подключенную удаленную ветвь.
Мониторинг хода выполнения длительных операций
Полный сценарий см. в разделе "Опрос длительной операции".
- Получите идентификатор операции из update from Git или скрипта Commit для Git .
- Вызовите API состояния LRO через указанные интервалы (в секундах) и распечатайте состояние.
Рекомендации и ограничения
- Интеграция с Git с помощью API имеет те же ограничения , что и пользовательский интерфейс интеграции Git.
- Субъект-служба не поддерживается.
- Обновление семантической модели с помощью API расширенного обновления вызывает дифф Git после каждого обновления.