Compartilhar via


Automatizar a integração do Git usando APIs

A ferramenta de integração do Git do Microsoft Fabric permite que as equipes trabalhem juntas usando o controle do código-fonte para criar um processo de lançamento eficiente e reutilizável para seu conteúdo do Fabric.

Com as APIs REST do Microsoft Fabric, você pode automatizar procedimentos e processos do Fabric para concluir tarefas com mais rapidez e menos erros. Essa eficiência proporciona economia de custos e maior produtividade.

Este artigo descreve como usar as APIs REST de integração do Git para automatizar a integração do Git no Microsoft Fabric.

Pré-requisitos

Para trabalhar com APIs Git do Fabric, são necessários:

Você pode usar as APIs REST sem o PowerShell, mas os scripts deste artigo usam o PowerShell. Para executar os scripts, você precisa seguir as seguintes etapas:

Funções da API de integração do Git

As APIs REST de integração do Git podem auxiliar a alcançar a CI/CD (integração contínua e a entrega contínua) do conteúdo. Aqui estão alguns exemplos do que pode ser feito usando as APIs:

Exemplos

Use os scripts do PowerShell a seguir para compreender como executar vários processos de automação comuns. Para exibir ou copiar o texto em um exemplo do PowerShell, use os links desta seção. Você também pode ver todos os exemplos no repositório do GitHub de exemplos de integração do Git com o Fabric.

Conectar e atualizar

Nesta seção, descrevemos as etapas envolvidas na conexão e atualização de um espaço de trabalho com o Git.

Para obter o script completo, consulte Conectar e atualizar do Git.

  1. Entre e obtenha o token de acesso: entre no Fabric como um usuário (não como uma entidade de serviço). Use o comando Connect-AzAccount para entrar. Para obter um token de acesso, use o comando Get-AzAccessToken.

    Seu código deve ter a seguinte aparência:

    $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. Chame a API Connect para conectar o espaço de trabalho a um repositório Git e ramificação.

    
    # 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. Chame a API Initialize Connection para inicializar a conexão entre o espaço de trabalho e o repositório do Git/ramificação.

     # 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. Com base na resposta da API Initialize Connection, chame a API Atualizar do Git para concluir a atualização, ou não faça nada, se nenhuma ação for necessária.

    O script a seguir atualiza e monitora o progresso:

    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"))
    }
    

Atualizar a partir do Git

Nesta seção, descrevemos as etapas envolvidas na atualização de um espaço de trabalho com as alterações do Git. Neste script, atualizamos os itens do espaço de trabalho com as alterações do Git, mas deixamos o repositório Git inalterado.

Para verificar o script completo, confira Atualizar espaço de trabalho do Git.

  1. Entre no Git e obtenha autenticação.
  2. Chame a API Get Status para criar a atualização do corpo da solicitação do Git.
  3. Chame a API Update From Git para atualizar o espaço de trabalho com commits enviados para a ramificação conectada.

Confirmar tudo

Esta seção fornece uma descrição passo a passo de como confirmar programaticamente todas as alterações do espaço de trabalho para o Git.

Para obter o script completo, confira Fazer commit de todas as alterações no Git.

  1. Entre no Git e obtenha autenticação.
  2. Conecte-se ao espaço de trabalho.
  3. Chame a API REST Confirmar para Git.
  4. Obtenha o OperationId de Execução Prolongada para pesquisar o status da operação.

Selecionar Commit

Esta seção descreve as etapas envolvidas no commit apenas de alterações específicas do espaço de trabalho para o Git.

Para verificar o script completo, confira Fazer commit das alterações selecionadas no Git.

  1. Entre no Git e obtenha autenticação.
  2. Conecte-se ao espaço de trabalho.
  3. Chame a API Obter status para ver quais itens do espaço de trabalho foram alterados.
  4. Selecione os itens específicos a serem confirmados.
  5. Chame a API Confirmar para Git para confirmar as alterações selecionadas do espaço de trabalho para a ramificação remota conectada.

Monitorar o progresso de operações de longa duração

Para verificar o script completo, confira Apurar uma operação de execução prolongada.

  1. Recupere o OperationId dos scripts Atualizar do Git ou Confirmar para Git.
  2. Chame a API obter status de LRO em intervalos especificados (em segundos) e imprima o status.

Considerações e limitações

  • A integração do Git usando APIs está sujeita às mesmas limitações da interface do usuário de integração do Git.
  • A entidade de serviço não é compatível.
  • Atualizar um modelo semântico usando a API de atualização aprimorada resulta em uma comparação do Git após cada atualização.