PowerBI: CD/CI

3 minuto(s) de leitura

Fundamentos

O CD/CI (entrega contínua e integração contínua) é uma abordagem de desenvolvimento de software em que todos os desenvolvedores trabalham juntos em um repositório compartilhado de código e, conforme as alterações são feitas, há um processo de build automatizado para detectar problemas de código.

Agora imaginemos um cenário onde há um repositório git, na estrutura do AzureDevOps, no qual existem arquivos markdown, arquivos .sql, arquivos .pbix entre outros tantos e desejamos, a cada push, publicar a nova versão do arquivo .pbix em uma workspace.

Isso é possível utilizando os conceitos de CD/CI!! Por meio da configuração de Pipelines, no ambiente do AzureDevOps, é possível fazer o “deploy” automático de painéis em workspaces, com auxílio da extensão Power BI Actions do Maik van der Gaag.

Abaixo seguem explicações para dar início a essa configuração!



Configurações

No Ambiente do Portal Azure

É necessário registrar um novo aplicativo no Portal Azure, dentro do Microsoft Entra ID (anteriormente chamado de Active Diretory). Para isso basta ir em Microsoft Entra ID e, dentro da estrutura da sua organização, ir em App Registrations.

Crie uma Application e dê o nome de sua preferêrencia. É necessário anotar, para usar depois, o Application (Client) ID e o Directory (Tenant) ID.


É também necessário criar credenciais para essa Application! Para isso basta ir em Certificates & secrets e criar uma. Anote o secret criado!

Notas: Traçando paralelos, a aplicação criada atuará de forma similar à um usuário da organização que, por meio das credenciais, poderá publicar arquivos .pbix nas workspaces da organização!


Por fim, é necessário criar um grupo, do tipo Security, na estrutura do Tenant da organização, no qual deve ser adicionado, como membro, a Application recem criada. Esse grupo será usado nas configurações do Power BI. Dei o nome de Power BI CD-CI para o grupo.



No Ambiente do PowerBI

No PowerBI Admin Portal é necessário habilitar o Security Group recém criado para que ele possa fazer deploys de paineis nas workspaces.


Também é necessário adicionar a Application (ou Service Principal) com a permissão de, no mínimo, membro.



No Ambiente do AzureDevOps

Para isso é necessário instalar a extensão Power BI Actions no AzureDevOps.

E, por fim, promover configução do pipeline. Em um primeiro momento fiz a configuração de maneira similar ao que o vídeo do indiano sugere, ou seja,

  1. Usando o Azure Pipeline, crio um artifact.
  2. Usando o Realease, configuro a publicação do artifact na workspace


Outra abordagem que usei posteriormente, e é mais clean (e portanto, melhor!) , foi definir todas as etapas no arquivo azure-pipelines.yml, localizado na raiz do repositório git, no AzureDevOps, com o seguinte conteúdo

# Pipeline criado para automatizar a publicação de
# arquivos .pbix em workspaces do Power BI
#
# Michel Metran
# Data: 05.10.2023
# Atualizado em: 17.10.2023
# -------------------------

trigger:
  - main

# Agent
pool:
  vmImage: windows-2019

# Variáveis
variables:
  # AJUSTAR
  NamePbixFile: "ANPPs.pbix"
  WorkspaceName: "Testes"
  PowerBIService: "power-bi-service-principal"

  # Debugar Pipeline
  system.debug: "true"

steps:
  # Copia o arquivo .pbix para Staging Directory
  - task: CopyFiles@2
    displayName: 'Copy Files to: "$(Build.ArtifactStagingDirectory)"'
    inputs:
      SourceFolder: $(Build.SourcesDirectory)
      Contents: "**/$"
      TargetFolder: $(Build.ArtifactStagingDirectory)
      flattenFolders: true
      OverWrite: true

  # Publica arquivo do Staging Directory no Artifact
  # https://learn.microsoft.com/pt-br/azure/devops/pipelines/tasks/reference/publish-build-artifacts-v1
  - task: PublishBuildArtifacts@1
    displayName: "Publish Artifact to: $(Build.ArtifactStagingDirectory)"
    inputs:
      PathtoPublish: $(Build.ArtifactStagingDirectory)
      ArtifactName: my_artifact
      publishLocation: Container
      MaxArtifactSize: 0
      Parallel: false
      StoreAsTar: false

  # Publica Artifact na workspace
  - task: maikvandergaag.maikvandergaag-power-bi-actions.PowerBIActions.PowerBIActions@5
    displayName: "Power BI: Publish in Workspace"
    inputs:
      PowerBIServiceEndpoint: "$(PowerBIService)"
      WorkspaceName: "$(WorkspaceName)"
      PowerBIPath: "$(System.ArtifactsDirectory)/$"


Ah!, e também é necessário definir o Service Connection, inserindo o Application (Client) ID, o Directory (Tenant) ID e o Secret da Application.



Deploy

Após todas essas configurações, ao fazer qualquer modificação nos arquivos do repositório git e fizer um push para “subir” as modificações, o pipeline será disparado e o arquivo .pbix definido será publicada na workspace também definida no arquivo azure-pipelines.yml.



Referências

Foram diversas as referências que usei para conseguir fazer o deploy dos painéis automaticamente. Talvez o vídeo que importante foi o PowerBI - CI/CD using Azure DevOps, de um indiano que foi explicando as etapas que segui.

O vídeo Power BI Dataset CI/CD Pipeline (Azure Dev Ops, XMLA Endpoint, Tabular Editor & Service Connection) avança nas configurações, por trazer também a possibilidade de fazer deploy do modelo tabular!

Ainda, durante a configuração do pipeline, tive dificuldades para fazer funcionar corretamente e, diante disso, escrevi a issue #508 Doesn’t recognize my workspace que pode trazer mais informações.

Deixe um comentário