Azure DevOps - Integração Continua e Entrega Contínua de relatórios Power BI
Tags: devops, powerbi
Published: 2020-02-16 23:59:32

No [último artigo](https://dev.to/higor/azure-devops-integrando-boards-com-relatorios-do-power-bi-e26) mostrei como conectar o Azure DevOps através do *Analytics Views* do **Boards**.

Agora, quero mostrar passo a passo como adicionar o relatório que criamos na integração contínua e entrega contínua utilizando o Azure DevOps através do serviço **Azure Pipeline**. 

Vamos lá!?

**Requisitos:**

- Licença Power BI Pro (versão trial 60 dias); 
- Conta no Azure DevOps (podemos utilizar a versão gratuita);
- Conta no Azure (não utilizaremos de créditos);

#Azure Repos

Primeiro precisamos adicionar o nosso relatório ao repositório. Usaremos o próprio gerenciador de repositório do Azure DevOps, serviço chamado de **Azure Repos**.

Quando criamos o projeto no Azure DevOps, selecionamos o GIT como tipo de repositório. E continuaremos com essa opção. 

Vamos ir no *Repos > Files*.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/n7uak4hioe51qqyu8l2q.png)

E vamos inicializar com arquivo README.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/ukqgtveuwxxtvk9swdlv.png)

Vamos ir nos 3 pontos e selecionar a opção *Upload File*.


![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/b39h903biikbgrgc9exh.png)


Selecionar o novo arquivo, adicionar comentário. Iremos usar a *branch master* e podemos ainda vincular esse *commit* a um dos work items que temos.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/y58pvw2xcjmd0ij9oq7n.png)

E lá está o nosso arquivo com extensão *.pbix*.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/ooqxowdyj9ia37c1v3ym.png)

#Azure Pipeline - Build

Agora que nosso relatório do Power BI foi versionado, podemos adicionar ele no nosso *pipeline*.

E para isso, vamos ir em *Pipelines > Pipelines*.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/a3upgzevi7e1usgzpry0.png)


E vamos criar o **Pipeline**!

Como pode ser sua primeira experiência com *pipeline* no Azure DevOps, vamos optar pelo editor clássico. 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/9luls4by72imqqrbnyry.png)

Aqui, precisamos selecionar o gerenciador de repositório. No nosso caso, estamos usando o Azure Repos Git. Selecionar o nosso repositório e a *branch*, no nosso caso será a *Master* e continuar.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/3ojqqjcf5tvq70r3vzci.png)


Temos alguns templates disponíveis. No nosso caso, iremos criar sem template, e   para isso, vamos ir em *Empty job*.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/rfj8b0tsaxuv00qw2ezs.png)


E nessa tela, podemos adicionar *tasks* relacionadas ao nosso *build*. Não entrarei em detalhes, mas caso queria saber mais sobre **Azure DevOps** e **Azure Pipeline**, pode entrar em contato que lhe envio um cupom do meu [treinamento](https://www.udemy.com/azuredevops).

Vamos adicionar uma nova tarefa indo no botão "+" na direita do nosso *Agent job*.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/g21v75yhyjratotbw1jc.png)

Vamos procurar por *copy* e adicionar a tarefa *Copy files*.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/jtbis5ds0itxqiwa043z.png)

Com isso, podemos configurar a tarefa que irá copiar os arquivos do repositório. Em *Contents*, podemos adicionar a expressão **.pbix*, e assim, filtraremos por apenas por arquivos gerados pelo Power BI neste repositório. 


Também precisamos adicionar o *Target Folder*. E para isso, vamos utilizar a expressão *$(Build.ArtifactStagingDirectory)*. Essa é uma das diversas variáveis pré definidas do Azure DevOps. Para ver a lista completa, acesse esse [link](https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml).

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/3pywbllw3fg1d7que3md.png)

E vamos adicionar nossa segunda e últimas tarefas. Ela será responsável pela publicação do nosso artefato, utilizando o *Publish build artifacts*.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/502bdz51zvp12nrue9e2.png)

E não precisamos alterar suas configurações. Ela precisa estar apontando o *Path to Publish* para a pasta que copiamos o **.pbix* na tarefa anterior e o nome do artefato será *drop*.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/2tplcj2gc8o7427kzghz.png)

Agora podemos editar o nome, salvá-lo e rodar manualmente, clicando na opção *Save & queue*.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/5oxz0qyx5zol0isjq6a6.png)

Podemos adicionar um comentário e *Save and run*.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/blg24lu8er9qrp2m3koe.png)

Ele inicia o *build* e logo receberá uma mensagem de sucesso.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/nqhi8v4kdhumho9p59db.png)

Podemos clicar no *Agent Job* e assim que finalizado, conseguimos identificar que geramos um artefato.

 ![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/fr3e9p9kwwjrpbzk1cku.png)

Clicando no artefato identificamos a pasta, que na verdade é um arquivo zipado, contendo o nosso arquivo com extensão **.pbix*.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/2u7u7i9xu2ls0z87x9i2.png)


# Power BI Pro 

Legal, nosso relatório do Power BI já está no repositório e no nosso *pipeline*. Mas isso é apenas o inicio. Agora liberar acesso no Power BI a APIs.


Primeiro, precisamos ativar a licença PRO no nosso Power BI. Sem isso, infelizmente não conseguimos consumir as APIs e realizar o deploy via Azure DevOps e apenas em contas Pro, podemos criar Workspaces. Mas nem tudo está acabado. Você pode optar pela conta trial e prosseguir nesse passo a passo.

Para ativar a versão Pro, podemos ir em *Workspaces > Criar um workspace*.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/6ud3kbsg5pnrwwxluuir.png)

E somos indicados a utilizar a versão experimental do Pro.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/rg77b557ev21e3bvpeca.png)
  
Temos 60 dias para aproveitar essa experiência.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/lf645cer0rhwb2viqpeg.png)

Agora, vamos criar nosso *Workspace* no Power BI.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/385e94cybaog8oknte4r.png)

Mas, precisamos também adicionar nosso usuário como administrador. Para isso, vamos ir no em *workspace > nosso workspace criado > Acesso ao workspace*.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/dyy5hpqc0r1vzts729j8.png)

E vamos adicionar o nosso usuário como administrador desse workspace. Por padrão, ao criá-lo, você fica como membro apenas.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/v01m17bxbrb63kmrmugn.png)

Agora, vamos ir em  *workspace > nosso workspace criado > Configurações de workspace*.

E aqui, podemos adicionar o nosso usuário ou um grupo de usuários do Active Directory. 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/o4jju95wxlzcq5jdwe3y.png)

E ainda, você ou o administrador do Power BI precisam liberar o acesso a APIs e podemos fazer isso no *Portal do administrador > Configurações*. 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/e1zdnfeo9m7f3m80yfhv.png)

Vamos ir em *Configurações de locatário > Configurações de Desenvolvedor* e habilitar o uso de API.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/w0rcl55518t5qaw8s0i6.png)

Essa configuração pode levar até 15 minutos para ficar disponível. Enquanto isso, podemos criar a nossa aplicação que irá consumir a API.

#Power BI - Registro da Aplicação

E nossa missão está mais simples a alguns meses. Podemos acessar esse [link](https://dev.powerbi.com/apps) e cadastrar a nossa aplicação.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/o14fy3vb3j9pn89gf1dh.png)

Precisamos entrar com nossas credenciais do Power BI e adicionar um nome a nossa aplicação. 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/88rtdxtkr7klubdyy1cy.png)

A aplicação será do tipo *Server-side web application (for web apps or web APIs)*, inserir a URL da sua organização e URL de redirecionamento.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/g7hpv3vknn17tdhzsowd.png)

Irei conceder acesso total a essa aplicação, e registrá-lo.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/vfhkcqe9vuxlvruobd22.png)

Com isso, temos o nosso *Application ID* e *Application Secret*. Vamos copiar o *Application ID*, usaremos apenas ele.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/u0lc15rtlkim6r0bao7y.png)

# Azure - Conceder Permissão no Active Directory

Ao criar nossa conta no Power BI, ativamos também o acesso a nuvem da Microsoft.

E para finalizar essa parte, precisamos acessar o [portal do Azure](https://portal.azure.com/).

E no Portal do Azure, vamos ir em *Todos os serviços* e procurar por *active directory*. 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/mfdwk05lof0qveqhpe0c.png)

No *Active Diretory*, precisamos ir em *Registros de Aplicativos*.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/diqo98x0no3f4xq0hsxo.png)

E aqui vemos o aplicativo que criamos. Vamos entrar nele.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/6fvpvj3dqzk0n7c99jnd.png)

Em *Autenticação*, precisamos adicionar o aplicativo como cliente público.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/q4e72z6xgiplodvi4mzn.png)


E em *Permissões de API*, precisamos adicionar permissão de aplicativo para o *Power BI Service*.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/zrxmfaoeb1bn1ug43ee0.png)

E também conceder permissão ao nosso domínio.


![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/0hnax5asy702xrrb5tfk.png)

Em *Proprietários*, precisamos adicionar o nosso usuário.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/n69b8w6wtaw2879372qy.png)

E no Portal do Azure, era isso! Tudo configurado para o Azure DevOps acessar o portal do Power BI.


#Release

Legal, nosso relatório do Power BI já está no repositório e no nosso *pipeline* e fizemos a configurações necessárias no Active Diretory do Azure e no Portal do Power BI. E agora precisamos adicionar ele no *release*.

E para isso, iremos contar com uma ajuda: **Extensões do Marketplace**.

#Extensão Power BI Actions

Extensões do Marketplace nos ajudam e complementam os serviços disponíveis no Azure DevOps.

E para essa nossa solução de adicionar os relatórios do Power BI no C.I e C.D., vamos usar essa extensão: *[Power BI Actions](https://marketplace.visualstudio.com/items?itemName=maikvandergaag.maikvandergaag-power-bi-actions)*. 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/9ty0cx6bhex5gxbuq4y8.png)

Vamos acessá-la e **Get if free!**

Selecionar a nossa organização e instalar.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/whtp2sabdk1li6eyyu4j.png)

Caso você esteja utilizando o **Azure DevOps Server**, tens a opção de baixar e adicionar na sua organização.


# Release - Adicionado Artefato e Tarefas

E vamos ir ao nosso *Release*. Vamos acessá-lo em *Pipelines > Releases *.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/gccvltpi9b9ytlrma5ux.png)

E vamos criar o nosso *New Pipeline*.

Não precisamos selecionar template. Vamos ir em *Empty Job*.

E o nosso *release*, é dividido em 2 partes: 

- *Artifacts*, onde indicamos qual a fonte do nosso *release*, no nosso caso nosso repositório do Azure Repos.

- *Stages*, onde adicionamos os *steps* que teremos na entrega dos nossos artefatos.

 ![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/u72xhev4mlosoprkinjm.png)

Primeiro, vamos ir em *Artifacts* e vamos indicar o nosso repositório e nossa *branch master*.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/m9wxs0cw9wdze5emcwt4.png)

E em *Stages*, já temos 1 *job*, vamos clicar nele.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/ki4yr8kotmgf3utmbjq8.png)

Temos o nosso agente e precisamos adicionar tarefas. Na verdade, iremos adicionar apenas uma. Vamos ir no botão "+".

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/hy2k2778ngmzg4bs4cqi.png)

Vamos pesquisar por *Power BI*, e já vemos a tarefa da extensão que instalamos a pouco.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/dleo4xt8nj7hfq0wcnn0.png)

E agora temos diversas configurações a fazer. 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/b79nn0f5f4ve1eb9c6q7.png)

Usaremos o tipo de autenticação como *User*. 

Mas, precisamos criar essa autenticação. E para isso, vamos ir em *Manager*.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/o5soihzcb3fxlzw4tfop.png)

E vamos criar uma nova conexão, e vai ser do tipo *Power BI - User*.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/i9vvcwp14lpcqct214q0.png)

Lembram do *Application ID* que copiamos a pouco? Usaremos ela no campo *Client Id*.

Também precisamos adicionar nosso usuário e senha e adicionar nome da conexão.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/w9enrv0fz8etb3zzgoat.png)

E podemos voltar ao *Releases*. Precisamos selecionar a conexão que criamos.

Em *Action*, temos algumas opções, como por exemplo, *Upload PowerBI Report*, e é ela que usaremos.

Precisamos também selecionar o nosso *workpace* que criamos no Power BI e o *Source File*, selecionando a pasta *drop* do nosso artefato.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/jrnpg2oqymx88xyx07co.png)

Podemos alterar o nome do *Release*, salvar e criar o nosso *release*.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/za9e0wmb6p2lutyo1ra8.png)

Vamos criar nosso *release* manualmente e vamos rodá-lo.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/gxtlgh22l40j5zhnx98q.png)

E terminou com **Sucesso**!

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/irc1d1bx61rxc149662x.png)

Podemos entrar no *job* e ver detalhes da execução.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/xogv36cy9e7fa35o9ba9.png)

E acessando workspace, lá está o nosso relatório.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/oi75v1w6pwkk6dg57fd7.png)

# Integração Contínua e Entrega Contínua

Podemos sempre que o arquivo do Power BI for *commitado*, iniciar automaticamente a execução do *pipeline*. Para isso, vamos ir em * Pipelines > Pipelines*.

Selecionar o nosso *build*, editá-lo e navegar até a aba *Triggers*.

Marcar a opção *Enable continuous integration* e selecionar a nossa *branch*.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/kcsqkvaufasfr9uf1q5b.png)

E depois da integração contínua, podemos também habilitar a entrega contínua.

Para isso, vamos ir em *Pipelines > Releases*. Editar nosso *release* e clicar no ícone do *Continuous Deployment trigger* e habitá-lo.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/g2sewdlioq8redg19o8y.png)

E está lá! Agora nossos relatórios do Power BI estão versionados e assim que commitados, irão diretamente para o nosso *workspaces* no portal do Power BI.

Podemos também criar mais um workspace e adicionar mais um step e aprovações. Deixando assim um workspace como ambiente de homologação e outro como produção, ficando assim: 


![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/q4ijs7u0hsc0v7mriqqi.png)


**E assim, finalizamos o C.I./C.D. dos nossos relatórios Power BI!**