Поделиться через


Автоматизация интеграции Git с помощью API

Средство интеграции Microsoft Fabric Git позволяет командам совместно работать с помощью системы управления версиями для создания эффективного и повторно используемого процесса выпуска для содержимого Fabric.

С помощью ИНТЕРФЕЙСов REST API Microsoft Fabric можно автоматизировать процедуры и процессы Fabric для выполнения задач быстрее и с меньшим количеством ошибок. Эта эффективность приводит к экономии затрат и повышению производительности.

В этой статье описывается, как использовать REST API интеграции Git для автоматизации интеграции Git в Microsoft Fabric.

Необходимые компоненты

Чтобы работать с API-интерфейсами Git Fabric, вам потребуется:

Интерфейсы REST API можно использовать без PowerShell, но скрипты в этой статье используют PowerShell. Чтобы запустить скрипты, необходимо выполнить следующие действия.

Функции API интеграции Git

ИНТЕРФЕЙСы REST API интеграции Git помогают обеспечить непрерывную интеграцию и непрерывную доставку содержимого (CI/CD). Ниже приведены несколько примеров того, что можно сделать с помощью API:

Примеры

Используйте следующие сценарии PowerShell, чтобы понять, как выполнять несколько распространенных процессов автоматизации. Чтобы просмотреть или скопировать текст в примере PowerShell, используйте ссылки в этом разделе. Вы также можете просмотреть все примеры в репозитории GitHub для интеграции Fabric.

Подключение и обновление

В этом разделе описаны шаги, связанные с подключением и обновлением рабочей области с помощью Git.

Полный сценарий см. в разделе "Подключение и обновление" из Git.

  1. Войдите и получите маркер доступа — войдите в 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
        }
    }
    
  2. ВызовИТЕ 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
    
  3. Вызовите 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 "{}"
    
  4. В зависимости от ответа 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.

  1. Войдите в Git и получите проверку подлинности.
  2. Вызовите API получения состояния, чтобы создать обновление из текста запроса Git.
  3. Вызовите API Update From Git, чтобы обновить рабочую область с фиксациями, отправленными в подключенную ветвь.

Зафиксировать все

В этом разделе приведено пошаговое описание того, как программно зафиксировать все изменения из рабочей области в Git.

Полный скрипт см. в разделе "Фиксация всех изменений в Git".

  1. Войдите в Git и получите проверку подлинности.
  2. Подключение к рабочей области.
  3. Вызовите REST API фиксации для Git .
  4. Получите идентификатор длительной операции для опроса состояния операции.

Выборочная фиксация

В этом разделе описаны шаги, связанные с фиксацией только определенных изменений из рабочей области в Git.

Полный сценарий см. в разделе "Фиксация" выбора изменений в Git.

  1. Войдите в Git и получите проверку подлинности.
  2. Подключение к рабочей области.
  3. Вызовите API состояния Get, чтобы узнать, какая рабочая область элементов была изменена.
  4. Выберите определенные элементы для фиксации.
  5. Вызовите API Фиксации в Git , чтобы зафиксировать выбранные изменения из рабочей области в подключенную удаленную ветвь.

Мониторинг хода выполнения длительных операций

Полный сценарий см. в разделе "Опрос длительной операции".

  1. Получите идентификатор операции из update from Git или скрипта Commit для Git .
  2. Вызовите API состояния LRO через указанные интервалы (в секундах) и распечатайте состояние.

Рекомендации и ограничения