Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Инструмент интеграции Git в Microsoft Fabric позволяет командам совместно работать с помощью системы управления версиями для создания эффективного и многократно используемого процесса выпуска для содержимого Fabric.
С помощью интерфейсов REST API Microsoft Fabric вы можете автоматизировать процедуры и процессы Microsoft Fabric для более быстрого выполнения задач и уменьшения количества ошибок. Эта эффективность приводит к экономии затрат и повышению производительности.
В этой статье описывается, как использовать REST API интеграции Git для автоматизации интеграции Git в Microsoft Fabric.
Предварительные условия
Чтобы работать с API-интерфейсами Git Fabric, вам потребуется:
Токен Microsoft Entra для службы Fabric. Используйте этот маркер в заголовке авторизации вызова API. Сведения о том, как получить токен, см. в разделе Краткое руководство по API Fabric.
Если вы используете служебный принципал GitHub, ему требуются те же разрешения, что и пользовательскому принципалу.
Интерфейсы REST API можно использовать без PowerShell, но скрипты в этой статье используют PowerShell. Чтобы запустить скрипты, выполните следующие действия.
- Установите PowerShell.
- Установите модуль Az для Azure PowerShell.
Функции API интеграции Git
REST API для интеграции Git могут помочь вам достичь непрерывной интеграции и доставки контента (CI/CD). Ниже приведены несколько примеров того, что можно сделать с помощью API:
Подключите и отключите определенную рабочую область из репозитория Git и ветви, подключенной к ней. (Для подключения требуется идентификатор подключения учетных данных поставщика Git.)
Получение сведений о подключении для указанной рабочей области.
Получение или создание подключения к учетным данным поставщика Git.
Обновите учетные данные Git, чтобы обновить сведения о конфигурации учетных данных Git. Требуется идентификатор подключения для учетных данных провайдера Git.
Получите мои учетные данные Git, чтобы получить сведения о конфигурации учетных данных Git.
Инициализация подключения для рабочей области, подключенной к Git.
Узнайте, какие элементы имеют входящие изменения и какие имеют изменения, которые еще не были зафиксированы в Git, с помощью API состояния Git.
Зафиксируйте изменения в рабочей области на подключенной удаленной ветви.
Обновите рабочую область с коммитами, внесёнными в подключённую ветвь.
Примеры
Используйте следующие сценарии PowerShell, чтобы понять, как выполнять несколько распространенных процессов автоматизации. Чтобы просмотреть или скопировать текст в примере PowerShell, используйте ссылки в этом разделе. Вы также можете просмотреть все примеры в репозитории GitHub с примерами интеграции Fabric через Git.
Подключение и обновление
В этом разделе описаны шаги, связанные с подключением и обновлением рабочей области с помощью Git.
Полный сценарий см. в разделе "Подключение и обновление" из Git. (Совместимость скрипта — PowerShell 5.1)
Подключитесь к учетной записи Azure и получите токен доступа. Войдите в Fabric как пользователь (или, если используется GitHub, как пользователь или как субъект-служба). Используйте команду Connect-AzAccount для подключения . Чтобы получить маркер доступа, используйте команду Get-AzAccessToken и преобразуйте маркер безопасной строки в обычный текст.
Код должен выглядеть следующим образом:
$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 } }
ВызовИТЕ API Connect, чтобы подключить рабочую область к репозиторию и ветви Git. (сначала может потребоваться создать подключение ( сначала)
$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
Вызовите 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 Commit to Git.
- Получите идентификатор длительной выполняемой операции для опроса о состоянии данной операции.
Выборочный коммит
В этом разделе описаны шаги, связанные с фиксацией только определенных изменений из рабочей области в Git.
Полный сценарий см. в разделе Коммит выбранных изменений в Git.
- Войдите в Git и получите проверку подлинности.
- Подключитесь к рабочей области.
- Вызовите API Получить статус, чтобы узнать, какие элементы в рабочем пространстве были изменены.
- Выберите определенные элементы для подтверждения.
- Вызовите API Commit to Git, чтобы зафиксировать выбранные изменения из рабочей области в подключённую удалённую ветвь.
Отслеживайте ход выполнения длительных операций
Для получения полного сценария см. раздел "Опрос состояния длительно выполняющейся операции".
- Получите идентификатор операции из скрипта Update From Git или Commit to Git.
- Вызовите API Get LRO Status через указанные интервалы (в секундах) и выведите статус на экран.
Получение или создание подключения к учетным данным поставщика Git
Чтобы подключиться к репозиторию Git или обновить учетные данные Git , необходимо предоставить идентификатор подключения. Идентификатор подключения может поступать из нового создаваемого подключения или существующего подключения.
- Создайте новое подключение с использованием учетных данных вашего поставщика Git.
- Используйте существующее подключение , для которых у вас есть разрешения.
Создание нового подключения, которое хранит учетные данные GitHub
Используйте личный маркер доступа (PAT) для создания подключения GitHub.
Если указать имя определенного репозитория, подключение будет ограничено этим репозиторием. Если имя репозитория не указано, вы получите доступ ко всем репозиториям, для которых у вас есть разрешение.
Чтобы создать подключение, которое хранит учетные данные GitHub, вызовите API создания соединений со следующим текстом запроса. Раздел параметров является необязательным и необходим только в том случае, если вы хотите, чтобы ваше подключение было ограничено конкретным репозиторием.
Образец запроса
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
}
}
}
Пример ответа:
{
"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"
}
Скопируйте идентификатор и используйте его в Git — Подключение или Git — обновление моих учетных данных Git API.
Получение списка существующих подключений
Используйте API "Список подключений" , чтобы получить список существующих подключений, для которых есть разрешения, и их свойства.
Пример запроса
GET https://api.fabric.microsoft.com/v1/connections
Пример ответа
{
"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
}
}
]
}
Скопируйте идентификатор нужного подключения и используйте его в Git — Подключение или Git — обновление API учетных данных Git .
Рекомендации и ограничения
- Интеграция с Git с помощью API имеет те же ограничения , что и пользовательский интерфейс интеграции Git.
- Сервисный принципал поддерживается только для GitHub.
- Обновление семантической модели с помощью API расширенного обновления вызывает разницу в Git после каждого обновления.