<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Higor Barbosa</title>
    <description>The latest articles on DEV Community by Higor Barbosa (@higor).</description>
    <link>https://dev.to/higor</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F227738%2F7680a642-c2fd-4dba-b8ed-40e03652806f.png</url>
      <title>DEV Community: Higor Barbosa</title>
      <link>https://dev.to/higor</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/higor"/>
    <language>en</language>
    <item>
      <title>Flyway &amp; Azure DevOps : IaC com ARM Template</title>
      <dc:creator>Higor Barbosa</dc:creator>
      <pubDate>Tue, 30 Jun 2020 15:16:21 +0000</pubDate>
      <link>https://dev.to/higor/flyway-azure-devops-iac-com-arm-template-j8h</link>
      <guid>https://dev.to/higor/flyway-azure-devops-iac-com-arm-template-j8h</guid>
      <description>&lt;p&gt;E chegamos ao penúltimo artigo dessa serie.&lt;/p&gt;

&lt;p&gt;Vamos agora adicionar a criação do nosso banco &lt;em&gt;Azure SQL Database&lt;/em&gt; também no Azure DevOps.&lt;/p&gt;

&lt;p&gt;E para isso, lembram que um pouco antes de criar o serviço de SQL Database no Azure, tínhamos a opção de baixar o template ARM? Pois bem, utilizaremos ele agora.&lt;/p&gt;

&lt;h1&gt;
  
  
  Tópicos
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;IaC e ARM Template&lt;/li&gt;
&lt;li&gt;Adicionado ARM Template ao Repos GIT&lt;/li&gt;
&lt;li&gt;Adicionando ARM Template no nosso Release Pipeline&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  IaC e ARM Template&lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7yi0qvgmn1z1grnpjd1c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7yi0qvgmn1z1grnpjd1c.png" alt="Alt Text" width="260" height="211"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O nosso banco ja esta no nosso pipeline, mas a nossa infraestrutura (o nosso servidor de banco de dados SQL Database) não.&lt;/p&gt;

&lt;p&gt;E para isso, precisamos também adicionar a criação do nosso banco de dados ao nosso repositório, versionando e atualizando através de scripts.&lt;/p&gt;

&lt;p&gt;E essa tarefa, podemos chamar de IaC, ou simplesmente, Infraestrutura como código. &lt;/p&gt;

&lt;p&gt;Temos varias opções no mercado, como &lt;em&gt;Terraform&lt;/em&gt;. Mas usarei um recurso do Azure, chamado &lt;em&gt;ARM&lt;/em&gt;, &lt;em&gt;Azure Resource Manager&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adicionado ARM Template ao Repos GIT&lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Primeiro, vamos descompactar o arquivo que baixamos antes de criação do nosso banco SQL Database no Portal do Azure.&lt;/p&gt;

&lt;p&gt;E encontramos esses 2 arquivos: &lt;em&gt;parameters.json&lt;/em&gt; e &lt;em&gt;template.json&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F36ligcgikpza721smmnm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F36ligcgikpza721smmnm.png" alt="Alt Text" width="685" height="132"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos precisar incluir eles no nosso Azure Repos.&lt;/p&gt;

&lt;p&gt;Para isso, vamos criar o arquivo &lt;em&gt;parameters.json&lt;/em&gt; e adicionar nele o conteúdo do nosso arquivo da pasta descompactada com o mesmo nome.&lt;/p&gt;

&lt;p&gt;No parâmetro &lt;em&gt;administratorLoginPassword&lt;/em&gt;, voce precisará adicionar a senha a ser aplicada ao banco de dados.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Não é uma boa ideia adicionar senha do seu banco no seu repositório. No próximo artigo dessa serie, iremos substituir a senha por um segredo do Azure Key Vaults&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;E podemos &lt;em&gt;commitar&lt;/em&gt; ele.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9pbrmbixtecbnkm35yjw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9pbrmbixtecbnkm35yjw.png" alt="Alt Text" width="800" height="548"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos fazer upload do nosso arquivo &lt;em&gt;template.json&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Portanto, ficaremos com os 2 arquivos na nossa pasta &lt;em&gt;ARM&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Foov9fte1stbfr5pydgmg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Foov9fte1stbfr5pydgmg.png" alt="Alt Text" width="800" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Adicionando ARM Template no nosso Release Pipeline &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Vamos ir em &lt;em&gt;Pipelines &amp;gt; Releases&lt;/em&gt; e editar o nosso pipeline.&lt;/p&gt;

&lt;p&gt;E adicionar um novo &lt;em&gt;Stages&lt;/em&gt; em &lt;em&gt;Add &amp;gt; New Stage&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fscwukgznkz0ayflqbxot.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fscwukgznkz0ayflqbxot.png" alt="Alt Text" width="694" height="330"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E novamente, vamos inserir o o template vazio em &lt;em&gt;Empty Job&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqe7ru62bggawhrhccm5f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqe7ru62bggawhrhccm5f.png" alt="Alt Text" width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Podemos editar o seu nome para &lt;em&gt;ARM - Create DB&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7gpw1oaddrf8ak1m51t8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7gpw1oaddrf8ak1m51t8.png" alt="Alt Text" width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E vamos editar o agente desse estagio.&lt;/p&gt;

&lt;p&gt;Adicionar um nova tarefa. E procurar por &lt;em&gt;ARM&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;E será essa que usaremos: &lt;em&gt;ARM Template Deployment&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdhoa54u00q9zlwwp1dvd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdhoa54u00q9zlwwp1dvd.png" alt="Alt Text" width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Precisamos selecionar e autorizar a nossa inscrição no Azure e a nossa inscrição. &lt;/p&gt;

&lt;p&gt;A &lt;em&gt;action&lt;/em&gt; será &lt;em&gt;Create or update resource group&lt;/em&gt;. Precisamos também selecionar o nosso grupo de recursos e a localização que usaremos.&lt;/p&gt;

&lt;p&gt;E por fim, precisamos &lt;em&gt;linkar&lt;/em&gt; o nosso template com o arquivo dentro da pasta &lt;em&gt;ARM&lt;/em&gt; e o mesmo com o arquivo de parâmetros.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6p6x81x67s4bpuzx03ly.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6p6x81x67s4bpuzx03ly.png" alt="Alt Text" width="800" height="527"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Podemos voltar a aba &lt;em&gt;Pipelines&lt;/em&gt; e alterar a execucao do estagio &lt;em&gt;Flyway Info &amp;amp; Migrate&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1ih9dhv39jilx5xvmh6p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1ih9dhv39jilx5xvmh6p.png" alt="Alt Text" width="659" height="491"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos alterar o gatilho para &lt;em&gt;After stage&lt;/em&gt; e selecionar o estágio de &lt;em&gt;ARM - Create DB&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhxuxkf80s73f38dq02t9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhxuxkf80s73f38dq02t9.png" alt="Alt Text" width="800" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E ficou assim o nosso release pipeline:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpxb00inc9ucl5erc7gki.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpxb00inc9ucl5erc7gki.png" alt="Alt Text" width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Antes de gerar o pipeline, vamos ir no Portal do Azure e excluir o nosso servidor e banco SQL Database.&lt;/p&gt;

&lt;p&gt;E para isso, vamos ir no nosso grupo de recursos do Azure, selecionar o nosso &lt;em&gt;SQL database&lt;/em&gt; e &lt;em&gt;Sql server&lt;/em&gt; e exclui-los.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fm0knaf6biokd8cg899pl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fm0knaf6biokd8cg899pl.png" alt="Alt Text" width="800" height="311"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos confirmar e excluir.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fj2ccvui7lc82oasj7pe9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fj2ccvui7lc82oasj7pe9.png" alt="Alt Text" width="383" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pronto! Não temos &lt;em&gt;SQL Database&lt;/em&gt; no nosso grupo de recursos.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F33adku4n8tlnq0cf7k0i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F33adku4n8tlnq0cf7k0i.png" alt="Alt Text" width="800" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora sim, podemos salvar o nosso pipeline e criar um novo release.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdcrbmeop98yqu3kv3hbd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdcrbmeop98yqu3kv3hbd.png" alt="Alt Text" width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E nosso &lt;em&gt;deploy&lt;/em&gt; irá iniciar. Primeiro iremos criar o banco SQL Database no Azure, depois passaremos para o estágio do Flyway onde teremos a instalação, a execução do comando de informação e por fim, a migração rodando todos os scripts disponíveis.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqhac3nfwb8pf3lk3m622.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqhac3nfwb8pf3lk3m622.png" alt="Alt Text" width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E la está. Executou com sucesso como o esperado. ;)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxcx7cbpl8qfov9vr5i3i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxcx7cbpl8qfov9vr5i3i.png" alt="Alt Text" width="800" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No próximo artigo, iremos adicionar segredo do &lt;em&gt;Azure Key Vaults&lt;/em&gt; no nosso Release Pipeline, e assim, iremos atribuir a senha do banco de dados ao serviço do Azure!&lt;/p&gt;

&lt;p&gt;:)&lt;/p&gt;

</description>
      <category>azure</category>
      <category>devops</category>
      <category>sql</category>
      <category>database</category>
    </item>
    <item>
      <title>Flyway &amp; Azure DevOps : Criando Release Pipeline</title>
      <dc:creator>Higor Barbosa</dc:creator>
      <pubDate>Tue, 30 Jun 2020 14:56:05 +0000</pubDate>
      <link>https://dev.to/higor/flyway-azure-devops-criando-release-pipeline-11e</link>
      <guid>https://dev.to/higor/flyway-azure-devops-criando-release-pipeline-11e</guid>
      <description>&lt;p&gt;E vamos, enfim, criar o nosso &lt;em&gt;Deploy&lt;/em&gt; continuo utilizando o Azure DevOps.&lt;/p&gt;

&lt;p&gt;Se você não tem uma conta ainda, pode criar acessando esse &lt;a href="https://azure.microsoft.com/en-us/services/devops/?nav=min" rel="noopener noreferrer"&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Tópicos
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Repositório GIT&lt;/li&gt;
&lt;li&gt;Release Pipeline&lt;/li&gt;
&lt;li&gt;Extensão do Flyway no Marketplace&lt;/li&gt;
&lt;li&gt;Migração pelo Azure DevOps&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Repositório GIT &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Vamos criar o nosso projeto usando repositório GIT do serviço Repos do Azure DevOps.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhar6sj8u08i6cyv6ck57.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhar6sj8u08i6cyv6ck57.png" alt="Alt Text" width="661" height="606"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E vamos ir em *Repos &amp;gt; Files *.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftd5l4j3ssuuepkygnpsz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftd5l4j3ssuuepkygnpsz.png" alt="Alt Text" width="430" height="668"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Podemos iniciar nosso repositório.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgney7f01gbg8p8she1qa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgney7f01gbg8p8she1qa.png" alt="Alt Text" width="800" height="660"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E criar uma nova pasta. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fv05hxiaclbh8rppgzxcg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fv05hxiaclbh8rppgzxcg.png" alt="Alt Text" width="613" height="291"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos chamá-la de &lt;em&gt;scripts&lt;/em&gt; e vamos criar o arquivo &lt;em&gt;V2__SecoundScript.sql&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6ruclv6imnyp0zdmommy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6ruclv6imnyp0zdmommy.png" alt="Alt Text" width="540" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E vamos adicionar o script abaixo no arquivo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;INSERT INTO Customers  (name,Priority ) VALUES ('Mr. T', 1);
INSERT INTO Customers  (name,Priority ) VALUES ('Bob', 5);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E podemos &lt;em&gt;commitar&lt;/em&gt; na nossa &lt;em&gt;branch master&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsx4yoe4vmddzxz29256l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsx4yoe4vmddzxz29256l.png" alt="Alt Text" width="800" height="657"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E agora, podemos adicionar ao nosso pipeline.&lt;/p&gt;

&lt;h2&gt;
  
  
  Release Pipeline &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Vamos ir em &lt;em&gt;Pipelines &amp;gt; Releases&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Flab9bk56y4d2tz5raw5g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Flab9bk56y4d2tz5raw5g.png" alt="Alt Text" width="519" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E vamos ir em &lt;em&gt;New Pipeline&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Naã vamos selecionar um template. Usaremos o &lt;em&gt;empty job&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvl6gvupx155wdavot3e3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvl6gvupx155wdavot3e3.png" alt="Alt Text" width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos adicionar o nome de &lt;em&gt;Flyway Info&lt;/em&gt; no primeiro &lt;em&gt;stage&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;E adicionar nosso artefato.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdflp54vh4ylip3qepisf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdflp54vh4ylip3qepisf.png" alt="Alt Text" width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos selecionar a opção &lt;em&gt;Azure Repos GIT&lt;/em&gt;, o nosso projeto, repositório, a &lt;em&gt;branch master&lt;/em&gt; e adicionar o nosso &lt;em&gt;alias&lt;/em&gt; ao artefato.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftcgm98ljvc8a8txm52r5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftcgm98ljvc8a8txm52r5.png" alt="Alt Text" width="629" height="810"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Podemos agora editar o nosso &lt;em&gt;stage&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Faze60xkwt3kthtdzgwup.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Faze60xkwt3kthtdzgwup.png" alt="Alt Text" width="673" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Extensão do Flyway no Marketplace &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Vamos adicionar uma nova tarefa e procurar por &lt;em&gt;flyway&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;E podemos ver a extensão abaixo. Precisamos instalar ela. Vamos ir em &lt;em&gt;Get it free&lt;/em&gt; para adicionar ela a nossa organização do Azure DevOps.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fi4jls1gazd7ysy33z7ml.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fi4jls1gazd7ysy33z7ml.png" alt="Alt Text" width="800" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E aqui podemos conferir que ainda está em &lt;em&gt;preview&lt;/em&gt;. Mas vamos instalar ela. &lt;em&gt;Get it free&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6a18ty26tm13n38wa9cc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6a18ty26tm13n38wa9cc.png" alt="Alt Text" width="800" height="774"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos selecionar a nossa organização e clicar em &lt;em&gt;Install&lt;/em&gt;.&lt;br&gt;
Caso você utilize a versão &lt;em&gt;on-premise&lt;/em&gt;  do Azure DevOps, pode baixar a extensão em &lt;em&gt;download&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkf0sc0wd8acfogqapm57.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkf0sc0wd8acfogqapm57.png" alt="Alt Text" width="777" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Podemos atualizar a nossa lista de tarefas do &lt;em&gt;agent job&lt;/em&gt; e vemos 2 tarefas disponíveis: &lt;em&gt;Flyway CLI&lt;/em&gt; e &lt;em&gt;Flyway Installer&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Vamos incluir as duas no nosso agente.&lt;/p&gt;

&lt;p&gt;Primeiro a tarefa &lt;em&gt;Installer&lt;/em&gt;, onde devemos indicar a versão que queremos do nosso Flyway.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzx9ower1ab8aku8fdbwj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzx9ower1ab8aku8fdbwj.png" alt="Alt Text" width="800" height="318"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E depois, a tarefa &lt;em&gt;CLI&lt;/em&gt;, onde vamos selecionar o comando &lt;em&gt;info&lt;/em&gt; e vou indicar 3 variáveis a nossa tarefa: JDBC, password e user.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3s8j3zkh01eh2o9zgppa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3s8j3zkh01eh2o9zgppa.png" alt="Alt Text" width="800" height="570"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E vamos ir na aba &lt;em&gt;Variables&lt;/em&gt; e criar as nossas variáveis.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fyyscd9nijk0flkh3cq6r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fyyscd9nijk0flkh3cq6r.png" alt="Alt Text" width="800" height="276"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E estamos prontos para rodar. Vamos alterar o nome do nosso pipeline, salvar e criar o nosso primeiro release.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjj1yiq6b6v9yiqeg3nau.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjj1yiq6b6v9yiqeg3nau.png" alt="Alt Text" width="800" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9miebhhip8b4xik0jk2g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9miebhhip8b4xik0jk2g.png" alt="Alt Text" width="610" height="882"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E vamos aguardar a execução.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fs9mdp1lxw2rcyk0tf98i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fs9mdp1lxw2rcyk0tf98i.png" alt="Alt Text" width="774" height="546"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E criou o release com sucesso!&lt;/p&gt;

&lt;p&gt;Vamos ir em &lt;em&gt;Logs&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsvipzaqfbzgyqrv1kmji.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsvipzaqfbzgyqrv1kmji.png" alt="Alt Text" width="688" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E vamos ir no log do &lt;em&gt;flyway info&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;o Flyway nos avisou que o primeiro script foi perdido e o segundo esta pendente para execução.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4mnkxeclj9a2p1opd4iq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4mnkxeclj9a2p1opd4iq.png" alt="Alt Text" width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos fechar o &lt;em&gt;log&lt;/em&gt;, editar o &lt;em&gt;Release Pipeline&lt;/em&gt; e ativar a &lt;em&gt;trigger&lt;/em&gt; de &lt;em&gt;Continuous Deployment&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fx5qod1vbf2hto8hxyprc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fx5qod1vbf2hto8hxyprc.png" alt="Alt Text" width="698" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E habilitar a &lt;em&gt;trigger&lt;/em&gt;, incluindo a &lt;em&gt;branch master&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzzl6zqqxh51rxddw8k4a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzzl6zqqxh51rxddw8k4a.png" alt="Alt Text" width="577" height="508"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos salvar e ir no &lt;em&gt;Repos &amp;gt; Files&lt;/em&gt;. Vamos fazer upload do nosso primeiro script  na pasta scripts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fytz69xl3ggpog5ouhftr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fytz69xl3ggpog5ouhftr.png" alt="Alt Text" width="785" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E &lt;em&gt;commitar&lt;/em&gt; ele.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgtztootodjkncher88bi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgtztootodjkncher88bi.png" alt="Alt Text" width="459" height="857"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos ir em &lt;em&gt;Pipelines &amp;gt; Release&lt;/em&gt; e veja que o nosso segundo release ja foi iniciado.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4fvrs89noj0lwpwxin1m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4fvrs89noj0lwpwxin1m.png" alt="Alt Text" width="800" height="214"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Depois de executa-lo, vamos novamente no &lt;em&gt;log&lt;/em&gt; e verificar &lt;em&gt;flyway info&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5xk7d6w6fi7ykv83tgfl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5xk7d6w6fi7ykv83tgfl.png" alt="Alt Text" width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E agora sim. O flyway identificou que o primeiro script rodou e estamos apenas pendente do segundo script.&lt;/p&gt;

&lt;p&gt;Vamos editar o nome do nosso estagio.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9xkiqr7brlfvk3ebfqi1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9xkiqr7brlfvk3ebfqi1.png" alt="Alt Text" width="800" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E também editar o &lt;em&gt;agent job&lt;/em&gt; do &lt;em&gt;stage&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1zobilwn9kg6tuau5zxe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1zobilwn9kg6tuau5zxe.png" alt="Alt Text" width="640" height="310"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Migração pelo Azure DevOps &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Podemos clonar a tarefas &lt;em&gt;flyway info&lt;/em&gt; e alterar o &lt;em&gt;command&lt;/em&gt; para &lt;em&gt;migrate&lt;/em&gt;, ficando como a imagem abaixo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftrr31jd9truru0dnz2uo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftrr31jd9truru0dnz2uo.png" alt="Alt Text" width="800" height="481"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E agora, podemos salvar e gerar mais um &lt;em&gt;release&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;E gerou com sucesso. Podemos ir no Log e na tarefa &lt;em&gt;flyway migrate&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4ardyicbdqyepqopui9w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4ardyicbdqyepqopui9w.png" alt="Alt Text" width="673" height="484"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E vemos que executou com sucesso o nosso segundo script.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4s7ld3cjnlqrar2tqlit.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4s7ld3cjnlqrar2tqlit.png" alt="Alt Text" width="800" height="353"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E podemos conferir no &lt;em&gt;Query Editor&lt;/em&gt; no nosso Azure SQL Database.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT TOP (1000) * FROM [dbo].[Customers]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E lá está os 2 &lt;em&gt;Customers&lt;/em&gt; adicionado no segundo script executado no Flyway diretamente do Release Pipeline do Azure DevOps.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F393attdiltg0u4cnjkpn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F393attdiltg0u4cnjkpn.png" alt="Alt Text" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;:)&lt;/p&gt;

</description>
      <category>azure</category>
      <category>sql</category>
      <category>database</category>
      <category>devops</category>
    </item>
    <item>
      <title>Flyway &amp; Azure DevOps : Rodando Flyway Localmente</title>
      <dc:creator>Higor Barbosa</dc:creator>
      <pubDate>Tue, 30 Jun 2020 14:31:41 +0000</pubDate>
      <link>https://dev.to/higor/flyway-azure-devops-rodando-flyway-localmente-527h</link>
      <guid>https://dev.to/higor/flyway-azure-devops-rodando-flyway-localmente-527h</guid>
      <description>&lt;p&gt;Instalamos o Flyway localmente e criamos o nosso banco de dados SQL Database no Azure. Agora, iremos rodar ele.&lt;/p&gt;

&lt;h1&gt;
  
  
  Tópicos
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Connection String&lt;/li&gt;
&lt;li&gt;Criando nosso Primeiro Script&lt;/li&gt;
&lt;li&gt;Migração&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Connection String &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;E para isso, vamos ir no diretorio do flyway e abrir o arquivo &lt;em&gt;flyway.conf&lt;/em&gt; dentro do diretorio &lt;em&gt;conf&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;Precisamos retirar o comentário do parâmetro &lt;em&gt;flyway.url&lt;/em&gt; e adicionar a nossa conexão. Podemos obter ela no portal do azure, indo no nosso servico do SQL Database e em &lt;em&gt;Settings / Connection String&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvto9cau8wgdo01vivr1n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvto9cau8wgdo01vivr1n.png" alt="Alt Text" width="208" height="654"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E dentro de &lt;em&gt;Connection String&lt;/em&gt;, vamos ir na aba &lt;em&gt;JDBC&lt;/em&gt; e copiar a conexao disponivel.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fybfos6go7r0oil8raq2l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fybfos6go7r0oil8raq2l.png" alt="Alt Text" width="800" height="229"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Não precisamos colocar todo o conteúdo do JDBC, podemos adicionar ele apenas ate o nome do nosso &lt;em&gt;database&lt;/em&gt;, ficando assim:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmk4029x5wn30l8culpy0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmk4029x5wn30l8culpy0.png" alt="Alt Text" width="800" height="218"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O &lt;em&gt;flyway.user&lt;/em&gt; e &lt;em&gt;flyway.user&lt;/em&gt; tambem é opcional.&lt;/p&gt;

&lt;p&gt;E podemos novamente rodar o comando flyway info. Ele pedirá nosso usuário e senha e mostrará essa mensagem: &lt;em&gt;No migrations found&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Faxkzgcpvv9v9z2xlf2jh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Faxkzgcpvv9v9z2xlf2jh.png" alt="Alt Text" width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Criando nosso Primeiro Script &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;E vamos ir ate a pasta &lt;em&gt;sql&lt;/em&gt;. E é nela que devemos adicionar os nossos scripts SQL.&lt;/p&gt;

&lt;p&gt;Podemos renomear o arquivo existente por &lt;em&gt;V1__CreateTables.sql&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmes487b880xzoo8rvpc3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmes487b880xzoo8rvpc3.png" alt="Alt Text" width="631" height="152"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E abrindo o arquivo, iremos incluir esse script.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* Single line comment */
CREATE TABLE Customers (
CustomerId smallint identity(1,1),
Name nvarchar(255),
Priority tinyint
)
CREATE TABLE Sales (
TransactionId smallint identity(1,1),
CustomerId smallint,
[Net Amount] int,
Completed bit
)
GO
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E como podemos ver, ele é bem simples. Irá criar 2 tabelas ....&lt;/p&gt;

&lt;p&gt;E vamos rodar novamente o comando &lt;code&gt;flyway info&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;E veja, agora temos 1 script, pendente de migração.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8aw1iywu2c0cwrdgml5n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8aw1iywu2c0cwrdgml5n.png" alt="Alt Text" width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Migração &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;E vamos executar a migração.&lt;br&gt;
Faremos ela, com o comando &lt;code&gt;flyway migrate&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbq9vnn4dq48foztikhbj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbq9vnn4dq48foztikhbj.png" alt="Alt Text" width="800" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E podemos ver que ele migrou com sucesso.&lt;/p&gt;

&lt;p&gt;Vamos agora ao Azure, acessando o &lt;em&gt;Query Editor&lt;/em&gt; do nosso banco de dados SQL Database. Atualizando as &lt;em&gt;tables&lt;/em&gt;, podemos ver que o script foi executado e criou as 2 tabelas.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2tia5tnsjdbuhomw7uqf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2tia5tnsjdbuhomw7uqf.png" alt="Alt Text" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Além disso, o Flyway criou a tabela &lt;em&gt;dbo.flyway_schema_history&lt;/em&gt;. Ele usa esse tabela para manter o histórico de execucação dos Scripts.&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;SELECT TOP (1000) * FROM [dbo].[flyway_schema_history]&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;Executando o comando acima, podemos ver dados quanto ao script executado, como a versão, o nome do script, quem executou e quando.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fm34jayfmwjdtku4gp0ek.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fm34jayfmwjdtku4gp0ek.png" alt="Alt Text" width="800" height="286"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No próximo artigo dessa serie, iremos rodar o Flyway a partir do nosso pipeline de Deploy Continua usando o Azure DevOps.&lt;/p&gt;

&lt;p&gt;:)&lt;/p&gt;

</description>
      <category>devops</category>
      <category>azure</category>
      <category>sql</category>
      <category>database</category>
    </item>
    <item>
      <title>Flyway &amp; Azure DevOps : Azure SQL Database</title>
      <dc:creator>Higor Barbosa</dc:creator>
      <pubDate>Tue, 30 Jun 2020 14:31:28 +0000</pubDate>
      <link>https://dev.to/higor/flyway-azure-devops-azure-sql-database-3ccm</link>
      <guid>https://dev.to/higor/flyway-azure-devops-azure-sql-database-3ccm</guid>
      <description>&lt;p&gt;Precisamos configurar nosso banco de dados no Flyway  e para isso, iremos utilizar o &lt;em&gt;Azure SQL Database&lt;/em&gt;, banco relacional na nuvem da Microsoft como Serviço.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ft8ry4vii8zburw6eufvb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ft8ry4vii8zburw6eufvb.png" alt="Alt Text" width="468" height="620"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Tópicos
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Azure SQL Database&lt;/li&gt;
&lt;li&gt;Criando o Banco de dados SQL Database no Portal do Azure&lt;/li&gt;
&lt;li&gt;Query Editor&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Azure SQL Database&lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;O Azure SQL Database é um banco de dados relacional na nuvem do Azure. Ele é um &lt;em&gt;PaaS&lt;/em&gt; - plataforma como serviço, totalmente gerenciado e muito parecido com o SQL Server, também da Microsoft. Ele eh um opção de baixo custo, principalmente comparado ao SQL Server e totalmente escalável.&lt;/p&gt;

&lt;h2&gt;
  
  
  Criando o Banco de dados SQL Database no Portal do Azure&lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;E para criar o nosso banco SQL, vamos ir no portal do Azure e procurar por SQL Database.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjlvrdn3tenpn9oifnwja.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjlvrdn3tenpn9oifnwja.png" alt="Alt Text" width="800" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos ir em &lt;em&gt;ADD&lt;/em&gt; e criar o nosso servidor de banco de dados.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1ag3jkoicb4vyae4bcgg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1ag3jkoicb4vyae4bcgg.png" alt="Alt Text" width="800" height="840"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No nosso exemplo, não precisamos usar o &lt;em&gt;Elastic Pool&lt;/em&gt; disponível no Azure SQL Database mas precisamos definir o tamanho do nosso servidor de banco de dados. E para isso, vamos ir em &lt;em&gt;Configure Database&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fb8jias855gvp7uirqff5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fb8jias855gvp7uirqff5.png" alt="Alt Text" width="800" height="305"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E precisamos definir o tamanho do nosso servidor. Irei selecionar a menor possível, com 100MB  de armazenamento.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvkjx4zejdek2avay4igk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvkjx4zejdek2avay4igk.png" alt="Alt Text" width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E podemos ir em &lt;em&gt;Next:Networking &amp;gt;&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;E em &lt;em&gt;Networking&lt;/em&gt;, precisamos definir como será a conectividade ao nosso banco de dados na nuvem da Microsoft.&lt;/p&gt;

&lt;p&gt;Irei habilitar como &lt;em&gt;Public Endpoint&lt;/em&gt; e nas regras do firewall, iremos habilitar o acesso aos serviços e recursos do Azure e também ao meu atual IP. Com isso, o Azure DevOps poderá acessar o nosso banco de dados e também a nossa máquina  de desenvolvimento.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3xmkrj0051i0mphhy5m8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3xmkrj0051i0mphhy5m8.png" alt="Alt Text" width="762" height="799"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E vamos avançar para &lt;em&gt;Next: Additional settings &amp;gt;&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Vamos optar por incluir o banco de dados vazio, selecionando a opcao &lt;em&gt;none&lt;/em&gt; e também usar o &lt;em&gt;Collation&lt;/em&gt; padrão (SQL_Latin1_General_CP1_CI_AS). Podemos avançar para tags e &lt;em&gt;Review + Create&lt;/em&gt; para verificar se esta tudo correto.&lt;/p&gt;

&lt;p&gt;Precisamos revisar, mas antes de criar o nosso serviço de banco de dados, vamos ir em &lt;em&gt;Download a template for automation&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fj3nbuwxrxxisfmqyq2ch.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fj3nbuwxrxxisfmqyq2ch.png" alt="Alt Text" width="545" height="813"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E vamos ir em &lt;em&gt;Download&lt;/em&gt;, e assim baixar o nosso template ARM. Usaremos ele no nosso penúltimo artigo dessa serie.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzislbykm7jw545c0stx1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzislbykm7jw545c0stx1.png" alt="Alt Text" width="800" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Podemos fechar e, enfim, criar o nosso SQL Database clicando no botão &lt;em&gt;Create&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;O recurso demora alguns minutos para ser criado, mas logo receberá a confirmação da criação do nosso banco de dados Azure SQL Database.&lt;/p&gt;

&lt;h2&gt;
  
  
  Query Editor&lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Vamos entrar no recurso, indo em &lt;em&gt;Go to Resource&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0v9ctgywt533dpj7pjv1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0v9ctgywt533dpj7pjv1.png" alt="Alt Text" width="462" height="253"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E vamos ir em &lt;em&gt;Query Editor&lt;/em&gt;, que ainda está em &lt;em&gt;preview&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzbknqk54p34ipbz5epmc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzbknqk54p34ipbz5epmc.png" alt="Alt Text" width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;NO &lt;em&gt;Query Editor&lt;/em&gt;, podemos fazer consultas no nosso banco de dados SQL na nuvem. Mas precisamos primeiro inserir o nosso login e senha ou acessar via &lt;em&gt;Active Directory&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fm5nvtuig1jvhae0o4rby.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fm5nvtuig1jvhae0o4rby.png" alt="Alt Text" width="686" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E clicando em &lt;em&gt;Tables&lt;/em&gt;, podemos ver que ainda não temos tabelas no nosso banco de dados.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqvu01qc3vac90frppaql.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqvu01qc3vac90frppaql.png" alt="Alt Text" width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Legal! Nosso banco de dados SQL Database está criado no Azure. No próximo artigo dessa serie, vamos rodar o Flyway localmente apontando para ele.&lt;/p&gt;

&lt;p&gt;:)&lt;/p&gt;

</description>
      <category>azure</category>
      <category>devops</category>
      <category>sql</category>
      <category>database</category>
    </item>
    <item>
      <title>Flyway &amp; Azure DevOps : Conhecendo o Flyway</title>
      <dc:creator>Higor Barbosa</dc:creator>
      <pubDate>Tue, 30 Jun 2020 14:30:36 +0000</pubDate>
      <link>https://dev.to/higor/flyway-azure-devops-conhecendo-o-flyway-2b23</link>
      <guid>https://dev.to/higor/flyway-azure-devops-conhecendo-o-flyway-2b23</guid>
      <description>&lt;p&gt;Falar sobre &lt;em&gt;DevOps&lt;/em&gt; e sua cultura é chover no molhado. Hoje, os times já estão adotando, mesmo que lentamente, a cultura &lt;em&gt;DevOps&lt;/em&gt; no seu dia a dia. &lt;/p&gt;

&lt;p&gt;Mas e o seu banco de dados? Ele está integrado na sua esteira de entrega continua? O &lt;em&gt;Continuous Delivery&lt;/em&gt; envolve o seu banco de dados? Pois, se ainda não está, nesta série quero mostrar para vocês,  passo a passo, como podemos adicionar o nosso banco de dados relacional no seu pipeline com a ajuda de 2 poderosas ferramentas: &lt;strong&gt;Azure DevOps&lt;/strong&gt; e &lt;strong&gt;Flyway&lt;/strong&gt;. Vamos lá!?&lt;/p&gt;

&lt;h1&gt;
  
  
  Tópicos
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Requisitos&lt;/li&gt;
&lt;li&gt;C.I. / C.D. para seu Banco de Dados&lt;/li&gt;
&lt;li&gt;Flyway&lt;/li&gt;
&lt;li&gt;Breve Histórico e Versões do Flyway&lt;/li&gt;
&lt;li&gt;Como funciona o Flyway&lt;/li&gt;
&lt;li&gt;Comandos Flyway&lt;/li&gt;
&lt;li&gt;Instalando Flyway Community&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Requisitos &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Conta no Azure DevOps (podemos utilizar a versão gratuita);&lt;/li&gt;
&lt;li&gt;Conta no Azure (usaremos para criar o nosso banco Azure SQL Database);&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  C.I. / C.D. para seu Banco de Dados &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Flm4k75r1t5an5gz79zrx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Flm4k75r1t5an5gz79zrx.png" alt="Alt Text" width="800" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Continuous Delivery&lt;/em&gt;, ou simplesmente, Entrega Contínua engloba publicar, de forma automática e usando ferramentas, o nosso código fonte até o destino final. E isso, deve também englobar o nosso banco de dados. &lt;/p&gt;

&lt;p&gt;Mas infelizmente, boa parte de projetos não adicionam o banco de dados na sua esteira de &lt;em&gt;deploy&lt;/em&gt;. E isso pode gerar transtornos no C.I./C.D. da sua aplicação. No momento em que você não adicionar o script do banco no seu release, e mantem interação humana para atualização do banco, e possibilidade de falha torna-se grande, e grave!&lt;/p&gt;

&lt;p&gt;Mas não é surpreendente, pois existem menos ferramentas para oferecer suporte ao DevOps para o banco de dados do que para &lt;em&gt;deploy&lt;/em&gt; da sua aplicação.&lt;/p&gt;

&lt;p&gt;Mas não significa que essas ferramentas não existam. E nesse artigo, quero falar sobre o Flyway. Com ele, podemos &lt;em&gt;commitar&lt;/em&gt; o código do banco de dados para um sistema de controle de versão como GIT, adicionar a Integração Contínua, e claro, realizar a entrega contínua do seus scripts para banco de dados, passando pelos seus ambientes &lt;em&gt;Staging&lt;/em&gt; ate chegar em Produção.&lt;/p&gt;

&lt;h1&gt;
  
  
  Flyway &lt;a&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcvnty1rfd6986l7gcpot.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcvnty1rfd6986l7gcpot.png" alt="Alt Text" width="400" height="318"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Flyway DB&lt;/strong&gt; é  uma ferramenta para controle da versão do nosso banco de dados relacional, e apesar de ser bem simples, ela é uma solução robusta e suporta os principais banco de dados baseados em SQL do mercado como Oracle, MySQL, MariaDB, SQL Server, PostgreSQL, DB2, SQLite e muitos outros.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fv3j5awxl4unjsandea4d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fv3j5awxl4unjsandea4d.png" alt="Alt Text" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Na nossa demo, iremos usar o Azure SQL Database. Mas o procedimento para a maioria dos outros bancos suportados é o mesmo.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Breve Histórico e Versões do Flyway &lt;a&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;O Flyway é uma ferramenta de migração de banco de dados de código aberto e foi adquirido pela empresa &lt;a href="https://www.red-gate.com/" rel="noopener noreferrer"&gt;Redgate&lt;/a&gt; em julho de 2019. &lt;br&gt;
E a partir disso,  temos a versão community , PRO e a versão enterprise.&lt;/p&gt;

&lt;p&gt;Neste &lt;a href="https://flywaydb.org/download/" rel="noopener noreferrer"&gt;link&lt;/a&gt; podemos ver as diferenças entre as versões.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fed6iyk97setg1kfgrz6k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fed6iyk97setg1kfgrz6k.png" alt="Alt Text" width="800" height="651"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A versão community suporta todas as versões atuais dos bancos de dados relacionais. Mas temos um "porém". Por exemplo, o banco SQL Server 2014 é apenas suportado na versão Enterprise. Fique atento sobre essas restrições na versão &lt;em&gt;Community&lt;/em&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Como funciona o Flyway &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;SIMPLES,  FOCO NA SOLUÇÃO e PODEROSO&lt;/strong&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Essa é a promessa do Flyway e ela é cumprida com maestria.&lt;/p&gt;

&lt;p&gt;Sua utilização é muito simples. &lt;/p&gt;

&lt;p&gt;Podemos rodar scrips via &lt;a href="https://flywaydb.org/getstarted/firststeps/api" rel="noopener noreferrer"&gt;Java API&lt;/a&gt;, &lt;a href="https://flywaydb.org/getstarted/firststeps/maven" rel="noopener noreferrer"&gt;Maven&lt;/a&gt; e &lt;a href="https://flywaydb.org/getstarted/firststeps/gradle" rel="noopener noreferrer"&gt;Gradle&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Além disso, podemos rodar a partir de comandos. E sera assim que iremos executá-lo.&lt;/p&gt;

&lt;p&gt;Um único comando e seu script SQL é migrado em segundos.&lt;/p&gt;

&lt;p&gt;O primeiro passo é  criar um script SQL. E pode usar essa nomenclatura:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;V1__MeuPrimeiroScript.sql&lt;/p&gt;

&lt;p&gt;V2__MeuSegundoScript.sql&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Onde &lt;em&gt;V1__&lt;/em&gt; e &lt;em&gt;V2__&lt;/em&gt; indica a versão crescente de execução do script. Com isso, você controla o que está migrando através do nome dos seus scripts SQL. &lt;/p&gt;

&lt;h2&gt;
  
  
  Comandos Flyway &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhe8af1s7dw5amy01ar0a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhe8af1s7dw5amy01ar0a.png" alt="Alt Text" width="655" height="190"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;flyway info&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Usamos esse comando para verificar o status do seus scripts e principalmente, obter informações do que será migrado antes de efetuar a migração.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fyqkrpqbn3shdxrmz7q77.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fyqkrpqbn3shdxrmz7q77.png" alt="Alt Text" width="800" height="277"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;flyway migrate&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Esse é o comando que executa os scripts SQL, por ordem crescendo da versão indicada no nome do arquivo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffs27k7oei9kotrqid8i3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffs27k7oei9kotrqid8i3.png" alt="Alt Text" width="800" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;flyway clean&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Esse comando limpa o nosso banco de dados. Todos os objetos como tabelas, views, procedures e triggers serão &lt;em&gt;droppadas&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Esse comando nunca deve ser executado em produção. Utilize apenas quando você precisar limpar bases de desenvolvimento ou testes.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fr7i38ttf8b113hwmbzwy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fr7i38ttf8b113hwmbzwy.png" alt="Alt Text" width="800" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;flyway validate&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Esse comando valida se as migrações a serem aplicadas no nosso banco de dados estão de acordo com o que aplicamos no nosso banco local.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F90kfex4brxcl2esrk9l0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F90kfex4brxcl2esrk9l0.png" alt="Alt Text" width="800" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;flyway undo&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Podemos adicionar &lt;em&gt;tags&lt;/em&gt; nas nossas migrações. E através delas, podemos reverter scripts incorporados posteriormente.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6bthhuo4nhh4n8dspdo5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6bthhuo4nhh4n8dspdo5.png" alt="Alt Text" width="800" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;flyway repair&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Esse comando corrige problemas que podemos ter na nossa tabela de histórico do schema (&lt;em&gt;flyway_schema_history&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fx3kpzkbkqbke8wlhy0r6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fx3kpzkbkqbke8wlhy0r6.png" alt="Alt Text" width="800" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;flyway baseline&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Usamos esse comando em banco de dados existentes, atualizando com uma versão especifica.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2hgk2v26k1rjcwn0u5x8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2hgk2v26k1rjcwn0u5x8.png" alt="Alt Text" width="800" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Instalando Flyway Community &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Podemos instalar o Flyway no Windows, Linux e MacOs sem problemas. Irei mostrar passo a passo como instalar no Windows 10, mas nesse link, você pode ver como é simples a instalação também no &lt;a href="https://flywaydb.org/documentation/commandline/#download-and-installation" rel="noopener noreferrer"&gt;Linux&lt;/a&gt; e &lt;a href="https://flywaydb.org/documentation/commandline/#download-and-installation" rel="noopener noreferrer"&gt;MacOs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;E primeiro, precisamos acessar esse &lt;a href="https://flywaydb.org/documentation/commandline/#download-and-installation" rel="noopener noreferrer"&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgs2xk7p60h90t37bzqoq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgs2xk7p60h90t37bzqoq.png" alt="Alt Text" width="764" height="224"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E vamos baixar! Atualmente esta na versão 6.5.0 e esta com o tamanho de 87.7MB.&lt;/p&gt;

&lt;p&gt;Depois de finalizado o download, vamos descomprimir o arquivo no diretório de sua escolhe. Por exemplo, na raiz do &lt;code&gt;C:/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Podemos inclusive ter 2 ou mais versões do Flyway na mesma máquina, conforme imagem abaixo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fc2q0ut73bu2qkmft6vxh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fc2q0ut73bu2qkmft6vxh.png" alt="Alt Text" width="669" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dentro do Flyway, temos essas pastas e  arquivos:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6vhiwb6di6up6gep09n9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6vhiwb6di6up6gep09n9.png" alt="Alt Text" width="397" height="284"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para o &lt;em&gt;flyway.cmd&lt;/em&gt;, iremos enviar os nossos comandos desejados.&lt;br&gt;
Na pasta &lt;em&gt;conf&lt;/em&gt;, temos o arquivo &lt;em&gt;flyway.conf&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Abrindo ele, vemos diversas de configurações.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjfr3zldkjwf1slm3ae4m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjfr3zldkjwf1slm3ae4m.png" alt="Alt Text" width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Os principais parâmetros para configuração:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;flyway.url&lt;/em&gt;: devemos indicar o JDBC que queremos conectar. Temos uma lista de exemplos no arquivo, como SQL Server, MySQL, Oraclee MariaDB.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;flyway.user&lt;/em&gt;  e &lt;em&gt;flyway.passwork&lt;/em&gt;: usuário e senha do nosso banco de dados.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;flyway.table&lt;/em&gt;: nome da tabela que será criada para controle das versões (histórico) de scripts executados no banco. Se não for preenchido, assumirá o valor padrão que é &lt;em&gt;flyway_schema_history&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Por enquanto, não iremos alterar nada. &lt;/p&gt;

&lt;p&gt;Vamos abrir o &lt;em&gt;command&lt;/em&gt; do Windows, navegar até a pasta onde instalamos o &lt;em&gt;flyway&lt;/em&gt; e executar o comando &lt;code&gt;flyway info&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgn5p0x923mvqkln57exh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgn5p0x923mvqkln57exh.png" alt="Alt Text" width="711" height="290"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E ele nos avisa que não foi possível conectar ao banco porque não configuramos a URL do nosso JDBC, usuário e senha. E isso faremos no próximo post dessa serie.&lt;/p&gt;

&lt;p&gt;:)&lt;/p&gt;

</description>
      <category>azure</category>
      <category>devops</category>
      <category>database</category>
      <category>sql</category>
    </item>
    <item>
      <title>Azure DevOps - Integração Continua e Entrega Contínua de relatórios Power BI</title>
      <dc:creator>Higor Barbosa</dc:creator>
      <pubDate>Sun, 16 Feb 2020 23:59:32 +0000</pubDate>
      <link>https://dev.to/higor/azure-devops-integracao-continua-e-entrega-continua-de-relatorios-power-bi-5bfc</link>
      <guid>https://dev.to/higor/azure-devops-integracao-continua-e-entrega-continua-de-relatorios-power-bi-5bfc</guid>
      <description>&lt;p&gt;No &lt;a href="https://dev.to/higor/azure-devops-integrando-boards-com-relatorios-do-power-bi-e26"&gt;último artigo&lt;/a&gt; mostrei como conectar o Azure DevOps através do &lt;em&gt;Analytics Views&lt;/em&gt; do &lt;strong&gt;Boards&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;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 &lt;strong&gt;Azure Pipeline&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Vamos lá!?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Requisitos:&lt;/strong&gt;&lt;/p&gt;

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

&lt;h1&gt;
  
  
  Azure Repos
&lt;/h1&gt;

&lt;p&gt;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 &lt;strong&gt;Azure Repos&lt;/strong&gt;.&lt;/p&gt;

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

&lt;p&gt;Vamos ir no &lt;em&gt;Repos &amp;gt; Files&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fn7uak4hioe51qqyu8l2q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fn7uak4hioe51qqyu8l2q.png" alt="Alt Text" width="509" height="649"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E vamos inicializar com arquivo README.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fukqgtveuwxxtvk9swdlv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fukqgtveuwxxtvk9swdlv.png" alt="Alt Text" width="613" height="160"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos ir nos 3 pontos e selecionar a opção &lt;em&gt;Upload File&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fb39h903biikbgrgc9exh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fb39h903biikbgrgc9exh.png" alt="Alt Text" width="800" height="167"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Selecionar o novo arquivo, adicionar comentário. Iremos usar a &lt;em&gt;branch master&lt;/em&gt; e podemos ainda vincular esse &lt;em&gt;commit&lt;/em&gt; a um dos work items que temos.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fy58pvw2xcjmd0ij9oq7n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fy58pvw2xcjmd0ij9oq7n.png" alt="Alt Text" width="492" height="952"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E lá está o nosso arquivo com extensão &lt;em&gt;.pbix&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fooqxowdyj9ia37c1v3ym.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fooqxowdyj9ia37c1v3ym.png" alt="Alt Text" width="800" height="227"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Azure Pipeline - Build
&lt;/h1&gt;

&lt;p&gt;Agora que nosso relatório do Power BI foi versionado, podemos adicionar ele no nosso &lt;em&gt;pipeline&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;E para isso, vamos ir em &lt;em&gt;Pipelines &amp;gt; Pipelines&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fa3upgzevi7e1usgzpry0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fa3upgzevi7e1usgzpry0.png" alt="Alt Text" width="531" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E vamos criar o &lt;strong&gt;Pipeline&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;Como pode ser sua primeira experiência com &lt;em&gt;pipeline&lt;/em&gt; no Azure DevOps, vamos optar pelo editor clássico. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9luls4by72imqqrbnyry.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9luls4by72imqqrbnyry.png" alt="Alt Text" width="650" height="557"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aqui, precisamos selecionar o gerenciador de repositório. No nosso caso, estamos usando o Azure Repos Git. Selecionar o nosso repositório e a &lt;em&gt;branch&lt;/em&gt;, no nosso caso será a &lt;em&gt;Master&lt;/em&gt; e continuar.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3ojqqjcf5tvq70r3vzci.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3ojqqjcf5tvq70r3vzci.png" alt="Alt Text" width="800" height="292"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Temos alguns templates disponíveis. No nosso caso, iremos criar sem template, e   para isso, vamos ir em &lt;em&gt;Empty job&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frfj8b0tsaxuv00qw2ezs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frfj8b0tsaxuv00qw2ezs.png" alt="Alt Text" width="800" height="329"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E nessa tela, podemos adicionar &lt;em&gt;tasks&lt;/em&gt; relacionadas ao nosso &lt;em&gt;build&lt;/em&gt;. Não entrarei em detalhes, mas caso queria saber mais sobre &lt;strong&gt;Azure DevOps&lt;/strong&gt; e &lt;strong&gt;Azure Pipeline&lt;/strong&gt;, pode entrar em contato que lhe envio um cupom do meu &lt;a href="https://www.udemy.com/azuredevops" rel="noopener noreferrer"&gt;treinamento&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Vamos adicionar uma nova tarefa indo no botão "+" na direita do nosso &lt;em&gt;Agent job&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fg21v75yhyjratotbw1jc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fg21v75yhyjratotbw1jc.png" alt="Alt Text" width="690" height="353"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos procurar por &lt;em&gt;copy&lt;/em&gt; e adicionar a tarefa &lt;em&gt;Copy files&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjtbis5ds0itxqiwa043z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjtbis5ds0itxqiwa043z.png" alt="Alt Text" width="800" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

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

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

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3pywbllw3fg1d7que3md.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3pywbllw3fg1d7que3md.png" alt="Alt Text" width="800" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E vamos adicionar nossa segunda e últimas tarefas. Ela será responsável pela publicação do nosso artefato, utilizando o &lt;em&gt;Publish build artifacts&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F502bdz51zvp12nrue9e2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F502bdz51zvp12nrue9e2.png" alt="Alt Text" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2tplcj2gc8o7427kzghz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2tplcj2gc8o7427kzghz.png" alt="Alt Text" width="800" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora podemos editar o nome, salvá-lo e rodar manualmente, clicando na opção &lt;em&gt;Save &amp;amp; queue&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5oxz0qyx5zol0isjq6a6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5oxz0qyx5zol0isjq6a6.png" alt="Alt Text" width="652" height="174"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Podemos adicionar um comentário e &lt;em&gt;Save and run&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fblg24lu8er9qrp2m3koe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fblg24lu8er9qrp2m3koe.png" alt="Alt Text" width="497" height="964"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ele inicia o &lt;em&gt;build&lt;/em&gt; e logo receberá uma mensagem de sucesso.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnqhi8v4kdhumho9p59db.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnqhi8v4kdhumho9p59db.png" alt="Alt Text" width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Podemos clicar no &lt;em&gt;Agent Job&lt;/em&gt; e assim que finalizado, conseguimos identificar que geramos um artefato.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffr3e9p9kwwjrpbzk1cku.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffr3e9p9kwwjrpbzk1cku.png" alt="Alt Text" width="677" height="476"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Clicando no artefato identificamos a pasta, que na verdade é um arquivo zipado, contendo o nosso arquivo com extensão *&lt;em&gt;.pbix&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2u7u7i9xu2ls0z87x9i2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2u7u7i9xu2ls0z87x9i2.png" alt="Alt Text" width="800" height="182"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Power BI Pro
&lt;/h1&gt;

&lt;p&gt;Legal, nosso relatório do Power BI já está no repositório e no nosso &lt;em&gt;pipeline&lt;/em&gt;. Mas isso é apenas o inicio. Agora liberar acesso no Power BI a APIs.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Para ativar a versão Pro, podemos ir em &lt;em&gt;Workspaces &amp;gt; Criar um workspace&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6ud3kbsg5pnrwwxluuir.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6ud3kbsg5pnrwwxluuir.png" alt="Alt Text" width="517" height="987"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E somos indicados a utilizar a versão experimental do Pro.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frg77b557ev21e3bvpeca.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frg77b557ev21e3bvpeca.png" alt="Alt Text" width="795" height="230"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Temos 60 dias para aproveitar essa experiência.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Flf645cer0rhwb2viqpeg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Flf645cer0rhwb2viqpeg.png" alt="Alt Text" width="768" height="180"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora, vamos criar nosso &lt;em&gt;Workspace&lt;/em&gt; no Power BI.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F385e94cybaog8oknte4r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F385e94cybaog8oknte4r.png" alt="Alt Text" width="551" height="920"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mas, precisamos também adicionar nosso usuário como administrador. Para isso, vamos ir no em &lt;em&gt;workspace &amp;gt; nosso workspace criado &amp;gt; Acesso ao workspace&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdyy5hpqc0r1vzts729j8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdyy5hpqc0r1vzts729j8.png" alt="Alt Text" width="703" height="326"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fv01m17bxbrb63kmrmugn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fv01m17bxbrb63kmrmugn.png" alt="Alt Text" width="527" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora, vamos ir em  &lt;em&gt;workspace &amp;gt; nosso workspace criado &amp;gt; Configurações de workspace&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;E aqui, podemos adicionar o nosso usuário ou um grupo de usuários do Active Directory. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fo4jju95wxlzcq5jdwe3y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fo4jju95wxlzcq5jdwe3y.png" alt="Alt Text" width="547" height="591"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E ainda, você ou o administrador do Power BI precisam liberar o acesso a APIs e podemos fazer isso no &lt;em&gt;Portal do administrador &amp;gt; Configurações&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fe1zdnfeo9m7f3m80yfhv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fe1zdnfeo9m7f3m80yfhv.png" alt="Alt Text" width="537" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos ir em &lt;em&gt;Configurações de locatário &amp;gt; Configurações de Desenvolvedor&lt;/em&gt; e habilitar o uso de API.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fw0rcl55518t5qaw8s0i6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fw0rcl55518t5qaw8s0i6.png" alt="Alt Text" width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h1&gt;
  
  
  Power BI - Registro da Aplicação
&lt;/h1&gt;

&lt;p&gt;E nossa missão está mais simples a alguns meses. Podemos acessar esse &lt;a href="https://dev.powerbi.com/apps" rel="noopener noreferrer"&gt;link&lt;/a&gt; e cadastrar a nossa aplicação.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fo14fy3vb3j9pn89gf1dh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fo14fy3vb3j9pn89gf1dh.png" alt="Alt Text" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Precisamos entrar com nossas credenciais do Power BI e adicionar um nome a nossa aplicação. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F88rtdxtkr7klubdyy1cy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F88rtdxtkr7klubdyy1cy.png" alt="Alt Text" width="800" height="470"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A aplicação será do tipo &lt;em&gt;Server-side web application (for web apps or web APIs)&lt;/em&gt;, inserir a URL da sua organização e URL de redirecionamento.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fg7hpv3vknn17tdhzsowd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fg7hpv3vknn17tdhzsowd.png" alt="Alt Text" width="764" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Irei conceder acesso total a essa aplicação, e registrá-lo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvfhkcqe9vuxlvruobd22.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvfhkcqe9vuxlvruobd22.png" alt="Alt Text" width="751" height="643"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Com isso, temos o nosso &lt;em&gt;Application ID&lt;/em&gt; e &lt;em&gt;Application Secret&lt;/em&gt;. Vamos copiar o &lt;em&gt;Application ID&lt;/em&gt;, usaremos apenas ele.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fu0lc15rtlkim6r0bao7y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fu0lc15rtlkim6r0bao7y.png" alt="Alt Text" width="455" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Azure - Conceder Permissão no Active Directory
&lt;/h1&gt;

&lt;p&gt;Ao criar nossa conta no Power BI, ativamos também o acesso a nuvem da Microsoft.&lt;/p&gt;

&lt;p&gt;E para finalizar essa parte, precisamos acessar o &lt;a href="https://portal.azure.com/" rel="noopener noreferrer"&gt;portal do Azure&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;E no Portal do Azure, vamos ir em &lt;em&gt;Todos os serviços&lt;/em&gt; e procurar por &lt;em&gt;active directory&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmfdwk05lof0qveqhpe0c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmfdwk05lof0qveqhpe0c.png" alt="Alt Text" width="689" height="272"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No &lt;em&gt;Active Diretory&lt;/em&gt;, precisamos ir em &lt;em&gt;Registros de Aplicativos&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdiqo98x0no3f4xq0hsxo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdiqo98x0no3f4xq0hsxo.png" alt="Alt Text" width="253" height="580"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E aqui vemos o aplicativo que criamos. Vamos entrar nele.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6fvpvj3dqzk0n7c99jnd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6fvpvj3dqzk0n7c99jnd.png" alt="Alt Text" width="800" height="189"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Em &lt;em&gt;Autenticação&lt;/em&gt;, precisamos adicionar o aplicativo como cliente público.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fq4e72z6xgiplodvi4mzn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fq4e72z6xgiplodvi4mzn.png" alt="Alt Text" width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E em &lt;em&gt;Permissões de API&lt;/em&gt;, precisamos adicionar permissão de aplicativo para o &lt;em&gt;Power BI Service&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzrxmfaoeb1bn1ug43ee0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzrxmfaoeb1bn1ug43ee0.png" alt="Alt Text" width="800" height="498"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E também conceder permissão ao nosso domínio.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0hnax5asy702xrrb5tfk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0hnax5asy702xrrb5tfk.png" alt="Alt Text" width="800" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Em &lt;em&gt;Proprietários&lt;/em&gt;, precisamos adicionar o nosso usuário.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fn69b8w6wtaw2879372qy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fn69b8w6wtaw2879372qy.png" alt="Alt Text" width="800" height="298"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E no Portal do Azure, era isso! Tudo configurado para o Azure DevOps acessar o portal do Power BI.&lt;/p&gt;

&lt;h1&gt;
  
  
  Release
&lt;/h1&gt;

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

&lt;p&gt;E para isso, iremos contar com uma ajuda: &lt;strong&gt;Extensões do Marketplace&lt;/strong&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Extensão Power BI Actions
&lt;/h1&gt;

&lt;p&gt;Extensões do Marketplace nos ajudam e complementam os serviços disponíveis no Azure DevOps.&lt;/p&gt;

&lt;p&gt;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: &lt;em&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=maikvandergaag.maikvandergaag-power-bi-actions" rel="noopener noreferrer"&gt;Power BI Actions&lt;/a&gt;&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9ty0cx6bhex5gxbuq4y8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9ty0cx6bhex5gxbuq4y8.png" alt="Alt Text" width="800" height="599"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos acessá-la e &lt;strong&gt;Get if free!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Selecionar a nossa organização e instalar.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwhtp2sabdk1li6eyyu4j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwhtp2sabdk1li6eyyu4j.png" alt="Alt Text" width="753" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Caso você esteja utilizando o &lt;strong&gt;Azure DevOps Server&lt;/strong&gt;, tens a opção de baixar e adicionar na sua organização.&lt;/p&gt;

&lt;h1&gt;
  
  
  Release - Adicionado Artefato e Tarefas
&lt;/h1&gt;

&lt;p&gt;E vamos ir ao nosso &lt;em&gt;Release&lt;/em&gt;. Vamos acessá-lo em *Pipelines &amp;gt; Releases *.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgccvltpi9b9ytlrma5ux.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgccvltpi9b9ytlrma5ux.png" alt="Alt Text" width="307" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E vamos criar o nosso &lt;em&gt;New Pipeline&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Não precisamos selecionar template. Vamos ir em &lt;em&gt;Empty Job&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;E o nosso &lt;em&gt;release&lt;/em&gt;, é dividido em 2 partes: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Artifacts&lt;/em&gt;, onde indicamos qual a fonte do nosso &lt;em&gt;release&lt;/em&gt;, no nosso caso nosso repositório do Azure Repos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Stages&lt;/em&gt;, onde adicionamos os &lt;em&gt;steps&lt;/em&gt; que teremos na entrega dos nossos artefatos.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fu72xhev4mlosoprkinjm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fu72xhev4mlosoprkinjm.png" alt="Alt Text" width="699" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Primeiro, vamos ir em &lt;em&gt;Artifacts&lt;/em&gt; e vamos indicar o nosso repositório e nossa &lt;em&gt;branch master&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fm9wxs0cw9wdze5emcwt4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fm9wxs0cw9wdze5emcwt4.png" alt="Alt Text" width="639" height="714"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E em &lt;em&gt;Stages&lt;/em&gt;, já temos 1 &lt;em&gt;job&lt;/em&gt;, vamos clicar nele.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fki4yr8kotmgf3utmbjq8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fki4yr8kotmgf3utmbjq8.png" alt="Alt Text" width="424" height="334"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Temos o nosso agente e precisamos adicionar tarefas. Na verdade, iremos adicionar apenas uma. Vamos ir no botão "+".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhy2k2778ngmzg4bs4cqi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhy2k2778ngmzg4bs4cqi.png" alt="Alt Text" width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos pesquisar por &lt;em&gt;Power BI&lt;/em&gt;, e já vemos a tarefa da extensão que instalamos a pouco.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdleo4xt8nj7hfq0wcnn0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdleo4xt8nj7hfq0wcnn0.png" alt="Alt Text" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E agora temos diversas configurações a fazer. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fb79nn0f5f4ve1eb9c6q7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fb79nn0f5f4ve1eb9c6q7.png" alt="Alt Text" width="800" height="643"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Usaremos o tipo de autenticação como &lt;em&gt;User&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;Mas, precisamos criar essa autenticação. E para isso, vamos ir em &lt;em&gt;Manager&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fo5soihzcb3fxlzw4tfop.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fo5soihzcb3fxlzw4tfop.png" alt="Alt Text" width="800" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E vamos criar uma nova conexão, e vai ser do tipo &lt;em&gt;Power BI - User&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fi9vvcwp14lpcqct214q0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fi9vvcwp14lpcqct214q0.png" alt="Alt Text" width="800" height="727"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lembram do &lt;em&gt;Application ID&lt;/em&gt; que copiamos a pouco? Usaremos ela no campo &lt;em&gt;Client Id&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Também precisamos adicionar nosso usuário e senha e adicionar nome da conexão.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fw9enrv0fz8etb3zzgoat.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fw9enrv0fz8etb3zzgoat.png" alt="Alt Text" width="491" height="672"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E podemos voltar ao &lt;em&gt;Releases&lt;/em&gt;. Precisamos selecionar a conexão que criamos.&lt;/p&gt;

&lt;p&gt;Em &lt;em&gt;Action&lt;/em&gt;, temos algumas opções, como por exemplo, &lt;em&gt;Upload PowerBI Report&lt;/em&gt;, e é ela que usaremos.&lt;/p&gt;

&lt;p&gt;Precisamos também selecionar o nosso &lt;em&gt;workpace&lt;/em&gt; que criamos no Power BI e o &lt;em&gt;Source File&lt;/em&gt;, selecionando a pasta &lt;em&gt;drop&lt;/em&gt; do nosso artefato.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjrnpg2oqymx88xyx07co.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjrnpg2oqymx88xyx07co.png" alt="Alt Text" width="800" height="486"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Podemos alterar o nome do &lt;em&gt;Release&lt;/em&gt;, salvar e criar o nosso &lt;em&gt;release&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fza9e0wmb6p2lutyo1ra8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fza9e0wmb6p2lutyo1ra8.png" alt="Alt Text" width="800" height="63"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos criar nosso &lt;em&gt;release&lt;/em&gt; manualmente e vamos rodá-lo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgxtlgh22l40j5zhnx98q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgxtlgh22l40j5zhnx98q.png" alt="Alt Text" width="614" height="675"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E terminou com &lt;strong&gt;Sucesso&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Firc1d1bx61rxc149662x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Firc1d1bx61rxc149662x.png" alt="Alt Text" width="668" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Podemos entrar no &lt;em&gt;job&lt;/em&gt; e ver detalhes da execução.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxogv36cy9e7fa35o9ba9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxogv36cy9e7fa35o9ba9.png" alt="Alt Text" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E acessando workspace, lá está o nosso relatório.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Foi75v1w6pwkk6dg57fd7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Foi75v1w6pwkk6dg57fd7.png" alt="Alt Text" width="800" height="239"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Integração Contínua e Entrega Contínua
&lt;/h1&gt;

&lt;p&gt;Podemos sempre que o arquivo do Power BI for &lt;em&gt;commitado&lt;/em&gt;, iniciar automaticamente a execução do &lt;em&gt;pipeline&lt;/em&gt;. Para isso, vamos ir em * Pipelines &amp;gt; Pipelines*.&lt;/p&gt;

&lt;p&gt;Selecionar o nosso &lt;em&gt;build&lt;/em&gt;, editá-lo e navegar até a aba &lt;em&gt;Triggers&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Marcar a opção &lt;em&gt;Enable continuous integration&lt;/em&gt; e selecionar a nossa &lt;em&gt;branch&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkcsqkvaufasfr9uf1q5b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkcsqkvaufasfr9uf1q5b.png" alt="Alt Text" width="800" height="341"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E depois da integração contínua, podemos também habilitar a entrega contínua.&lt;/p&gt;

&lt;p&gt;Para isso, vamos ir em &lt;em&gt;Pipelines &amp;gt; Releases&lt;/em&gt;. Editar nosso &lt;em&gt;release&lt;/em&gt; e clicar no ícone do &lt;em&gt;Continuous Deployment trigger&lt;/em&gt; e habitá-lo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fg2sewdlioq8redg19o8y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fg2sewdlioq8redg19o8y.png" alt="Alt Text" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E está lá! Agora nossos relatórios do Power BI estão versionados e assim que commitados, irão diretamente para o nosso &lt;em&gt;workspaces&lt;/em&gt; no portal do Power BI.&lt;/p&gt;

&lt;p&gt;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: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fq4ijs7u0hsc0v7mriqqi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fq4ijs7u0hsc0v7mriqqi.png" alt="Alt Text" width="800" height="328"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;E assim, finalizamos o C.I./C.D. dos nossos relatórios Power BI!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>powerbi</category>
    </item>
    <item>
      <title>Azure DevOps - Integrando Boards com Relatórios do Power BI</title>
      <dc:creator>Higor Barbosa</dc:creator>
      <pubDate>Sat, 15 Feb 2020 21:27:41 +0000</pubDate>
      <link>https://dev.to/higor/azure-devops-integrando-boards-com-relatorios-do-power-bi-e26</link>
      <guid>https://dev.to/higor/azure-devops-integrando-boards-com-relatorios-do-power-bi-e26</guid>
      <description>&lt;p&gt;&lt;strong&gt;Boards&lt;/strong&gt;, o serviço de gerenciamento e planejamento de projetos do Azure DevOps é uma ferramenta fantástica. &lt;/p&gt;

&lt;p&gt;Mas, nem sempre o que esta disponível na &lt;em&gt;feature&lt;/em&gt; de &lt;em&gt;Queries&lt;/em&gt; contempla tudo o que necessitamos.&lt;/p&gt;

&lt;p&gt;E para suprir isso, podemos conectá-lo ao Microsoft Power BI.&lt;/p&gt;

&lt;p&gt;E nesse artigo, quero demonstrar passo a passo como faremos isso. &lt;/p&gt;

&lt;p&gt;Vamos lá?&lt;/p&gt;

&lt;p&gt;Requisitos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Conta no &lt;a href="https://dev.azure.com/" rel="noopener noreferrer"&gt;Azure DevOps&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Instalação do &lt;a href="https://powerbi.microsoft.com/pt-br/desktop/" rel="noopener noreferrer"&gt;Power BI Desktop&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Māos a obra!&lt;/p&gt;

&lt;h1&gt;
  
  
  Azure DevOps
&lt;/h1&gt;

&lt;p&gt;Primeiro, você vai precisar ter uma conta do Azure DevOps. &lt;/p&gt;

&lt;p&gt;E você poderá cria-la, acessando &lt;a href="https://azure.microsoft.com/en-us/pricing/details/devops/azure-devops-services/" rel="noopener noreferrer"&gt;aqui&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A conta &lt;em&gt;Basic Plan&lt;/em&gt; já será suficiente para essa demonstração e totalmente gratuita para até 5 usuários.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2n8jt0f9uh7t01abrcb9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2n8jt0f9uh7t01abrcb9.png" alt="Alt Text" width="642" height="547"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Projeto no Azure DevOps
&lt;/h1&gt;

&lt;p&gt;Iremos trabalhar com o &lt;em&gt;Work Item Process&lt;/em&gt; Basic e esse &lt;a href="https://dev.azure.com/artigos/Relat%C3%B3rios%20com%20Power%20BI" rel="noopener noreferrer"&gt;projeto&lt;/a&gt; está público, caso queira consulta-lo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2qvwap7z1rssjnhmuchq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2qvwap7z1rssjnhmuchq.png" alt="Alt Text" width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O Azure DevOps  dividido em serviços. Boards, Repos, Pipelines, Test Plans e Artificats. Cada um com seu proposito.&lt;/p&gt;

&lt;p&gt;O Boards eh o serviço responsável pelo planejamento dos nossos projetos. E nele, podemos criar nossos epics, features, US, tarefas e bugs, gerenciando assim o desenvolvimento do nosso projeto. E temos 4 modelos de processos, cada um com suas caracteristicas e premissas: Basic, Scrum, Agile e CMMI.&lt;/p&gt;

&lt;p&gt;Iremos utilizar o Basic, modelo mais simplificado.&lt;/p&gt;

&lt;p&gt;Vamos acessar a nossa lista de Work Items, através do menu &lt;em&gt;Boards &amp;gt; Work Items&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9rygjyihslr685ganuip.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9rygjyihslr685ganuip.png" alt="Alt Text" width="800" height="601"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Podemos criar Epics, Issues e Tasks através da opçāo &lt;em&gt;New Work Item&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Mas, vamos simplificar. Vamos ir na opçāo * Import Work Items*.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8ep21wortm1f5ggvr7fs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8ep21wortm1f5ggvr7fs.png" alt="Alt Text" width="800" height="131"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E vamos selecionar esse &lt;a href="https://dev.azure.com/artigos/_git/Relat%C3%B3rios%20com%20Power%20BI?path=%2Fworkitems.csv&amp;amp;version=GBmaster" rel="noopener noreferrer"&gt;arquivo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Salvar clicando em &lt;em&gt;Save Items&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fuyftd4mgn47k185vv9v2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fuyftd4mgn47k185vv9v2.png" alt="Alt Text" width="800" height="542"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E esta lá! Temos &lt;em&gt;Issues&lt;/em&gt; e &lt;em&gt;Tasks&lt;/em&gt; no nosso projeto de exemplo.&lt;/p&gt;

&lt;p&gt;No Azure DevOps, temos uma sessão para novas features, que ainda estão em uma versão preview.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Foybm8fsddaa535v0utrz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Foybm8fsddaa535v0utrz.png" alt="Alt Text" width="678" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E entre essas features, temos a opçāo &lt;em&gt;Analytics Views&lt;/em&gt;. Podemos habilitá-la, para o usuário e para a organização.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8z85yttgihukgsltr23j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8z85yttgihukgsltr23j.png" alt="Alt Text" width="476" height="237"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E com isso, em &lt;em&gt;Overview&lt;/em&gt; temos a opção &lt;em&gt;Analytics view&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2smnqdn4pjxfri74ul1z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2smnqdn4pjxfri74ul1z.png" alt="Alt Text" width="593" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E acessando essa opção, vamos a lista de visões analíticas.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6z2fgvdksmsrihonvoy7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6z2fgvdksmsrihonvoy7.png" alt="Alt Text" width="800" height="527"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Na lista de visões, temos &lt;em&gt;Issues&lt;/em&gt;, &lt;em&gt;Tasks&lt;/em&gt;, &lt;em&gt;Bugs&lt;/em&gt; e &lt;em&gt;Work Items&lt;/em&gt; em geral, podendo visualizar pelo histórico ou presente.&lt;/p&gt;

&lt;p&gt;Podemos também criar novas visões, clicando em &lt;em&gt;New view&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;E vamos criar nossa visão.&lt;/p&gt;

&lt;p&gt;Em &lt;em&gt;General&lt;/em&gt;, vamos criar uma visão compartilhada.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F54z2taitp5qubfik5ab0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F54z2taitp5qubfik5ab0.png" alt="Alt Text" width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Em &lt;em&gt;Work Items&lt;/em&gt;, podemos selecionar pelo filtro por time, selecionar times, incluir filtros por &lt;em&gt;backlogs&lt;/em&gt;, &lt;em&gt;work items&lt;/em&gt; e também por critérios.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhirwq1e18k79drt9zw6y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhirwq1e18k79drt9zw6y.png" alt="Alt Text" width="800" height="560"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Em &lt;em&gt;Fields&lt;/em&gt;, vamos incluir os seguintes campos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Work item Id&lt;/li&gt;
&lt;li&gt;Title&lt;/li&gt;
&lt;li&gt;Area Path&lt;/li&gt;
&lt;li&gt;Assigned To&lt;/li&gt;
&lt;li&gt;Iteration Path&lt;/li&gt;
&lt;li&gt;State&lt;/li&gt;
&lt;li&gt;Work Item Type&lt;/li&gt;
&lt;li&gt;Priority&lt;/li&gt;
&lt;li&gt;Effort&lt;/li&gt;
&lt;li&gt;Tags&lt;/li&gt;
&lt;li&gt;Remaing Work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpf11nm43ba4dv7hgyxl2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpf11nm43ba4dv7hgyxl2.png" alt="Alt Text" width="800" height="593"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Em &lt;em&gt;History&lt;/em&gt;, podemos filtrar por datas mas iremos simplesmente filtrar apenas pelo estado atual.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwckhcxo07650w8qos9uw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwckhcxo07650w8qos9uw.png" alt="Alt Text" width="800" height="469"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Temos ainda a aba &lt;em&gt;Verification&lt;/em&gt;. Nela, verificamos se nossa visão se tudo está ok.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpby9ypc8vigu6qmr97cx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpby9ypc8vigu6qmr97cx.png" alt="Alt Text" width="800" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E vamos salvá-lo.&lt;/p&gt;

&lt;p&gt;Clicando na nossa visão criada, vemos o seu resumo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fua29c0otv97q6nobe8bf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fua29c0otv97q6nobe8bf.png" alt="Alt Text" width="469" height="784"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E o que queremos agora? Vamos criar relatórios no Power BI, utilizando essas informações que importamos.&lt;/p&gt;

&lt;h1&gt;
  
  
  Microsoft Power BI Desktop
&lt;/h1&gt;

&lt;p&gt;Precisamos instalar o Power BI Desktop. E podemos instalar através desse &lt;a href="https://powerbi.microsoft.com/pt-br/desktop/" rel="noopener noreferrer"&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhv0e7f4l2gn7akhm601i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhv0e7f4l2gn7akhm601i.png" alt="Alt Text" width="800" height="353"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ele é gratuito, mas não eh bem assim. Precisamos ter uma conta comercial, não podemos usar, por exemplo, nossa conta do gmail ou outlook.&lt;/p&gt;

&lt;p&gt;E a instalação e feita através do Microsoft Store.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fh4vd32be3wkqd8gd8ogh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fh4vd32be3wkqd8gd8ogh.png" alt="Alt Text" width="800" height="211"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Abrindo o Power BI Desktop, criamos a conta e fazemos login com e-mail comercial.&lt;/p&gt;

&lt;p&gt;Com ele aberto, podemos precisamos conectar o Power BI Desktop ao Azure DevOps.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fq2sek9g4xuuenny0iseh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fq2sek9g4xuuenny0iseh.png" alt="Alt Text" width="630" height="632"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E pra isso, vamos ir em &lt;em&gt;Get Data&lt;/em&gt; e na opção &lt;em&gt;More&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftg75zgw4czbt8ihvhs44.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftg75zgw4czbt8ihvhs44.png" alt="Alt Text" width="619" height="671"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aqui, temos os conectores disponíveis. O Power BI em si, não trabalha como um banco de dados, mas sim como um visualizador de dados. Você conecta o seu repositório e assim, poderá criar painéis, inclusive, relacionando fontes de dados.&lt;/p&gt;

&lt;p&gt;Vamos procurar por &lt;em&gt;Azure DevOps&lt;/em&gt; e temos 2 opções.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Azure DevOps (Beta)&lt;/li&gt;
&lt;li&gt;Azure DevOps Server (Beta)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fodz9us1z2t4wxhh8gbbg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fodz9us1z2t4wxhh8gbbg.png" alt="Alt Text" width="636" height="214"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ou seja, temos conectores disponíveis para a versão &lt;em&gt;Service&lt;/em&gt; e versão &lt;em&gt;On-Premise&lt;/em&gt;, ambos em versão &lt;em&gt;Beta&lt;/em&gt;, não recomendado para uso em produção, ainda!&lt;/p&gt;

&lt;p&gt;Devemos optar pela primeira opção, &lt;em&gt;Azure DevOps (Beta)&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Informar Organização e Projeto.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftayfw4it35l71apll96v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftayfw4it35l71apll96v.png" alt="Alt Text" width="728" height="253"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E logar na nossa conta do Azure DevOps.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fq85k6cmewgpiqfyfdtrx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fq85k6cmewgpiqfyfdtrx.png" alt="Alt Text" width="721" height="271"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Abriu a tela com as nossas visões. Todas visões criadas automaticamente e a nossa visão criada a pouco.&lt;/p&gt;

&lt;p&gt;Vamos selecionar a nossa visão e carregá-la.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fa523fmntnv1wxq0hyevz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fa523fmntnv1wxq0hyevz.png" alt="Alt Text" width="800" height="641"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Na esquerda, temos 3 opções:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Report&lt;/em&gt;, onde criamos o nosso painel;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fk4c98d284r69b7ntij22.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fk4c98d284r69b7ntij22.png" alt="Alt Text" width="800" height="218"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Data&lt;/em&gt;, onde podemos visualizar os dados conectados;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgz4m8o0q2u6b45h3fnkx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgz4m8o0q2u6b45h3fnkx.png" alt="Alt Text" width="800" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Model&lt;/em&gt;, onde temos o modelo relacional;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffl9jbqwjs25ibj2z3sut.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffl9jbqwjs25ibj2z3sut.png" alt="Alt Text" width="340" height="326"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos ir em &lt;em&gt;Report&lt;/em&gt;, e selecionar a visualização do tipo &lt;em&gt;Table&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9fisrwqzby7btxzxwiv7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9fisrwqzby7btxzxwiv7.png" alt="Alt Text" width="188" height="201"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Selecionamos os campos: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Effort&lt;/li&gt;
&lt;li&gt;Priorty&lt;/li&gt;
&lt;li&gt;Remaing work&lt;/li&gt;
&lt;li&gt;Tags&lt;/li&gt;
&lt;li&gt;Title&lt;/li&gt;
&lt;li&gt;Work Item Type&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vamos inserir também o gráfico &lt;em&gt;Donut&lt;/em&gt;. Adicionar &lt;em&gt;Effort&lt;/em&gt; em &lt;em&gt;Values&lt;/em&gt; e &lt;em&gt;Tags&lt;/em&gt; em &lt;em&gt;Legends&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqtx5j68l6ghbuc8yw84x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqtx5j68l6ghbuc8yw84x.png" alt="Alt Text" width="362" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E também inserir gráfico "Pie", selecionando &lt;em&gt;Tags&lt;/em&gt; em &lt;em&gt;Legends&lt;/em&gt; e &lt;em&gt;Remaining Work&lt;/em&gt; em &lt;em&gt;Values&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkvza8yr9lmi5fndk9sqz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkvza8yr9lmi5fndk9sqz.png" alt="Alt Text" width="362" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Podemos organizar melhor a pagina do nosso relatório, e adicionar imagem e texto, opções encontradas no menu do topo do Power BI Desktop.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhbzp63vynr1io6klmmpv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhbzp63vynr1io6klmmpv.png" alt="Alt Text" width="800" height="92"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E o nosso relatório ficou assim:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmnrf8gmtkd3l4y8v9m10.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmnrf8gmtkd3l4y8v9m10.png" alt="Alt Text" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Listamos os &lt;em&gt;work items&lt;/em&gt; e também temos 2 gráficos: Esforço por Tags e Trabalho Restante por Tag. Selecionando o work item ou a tag nos gráficos, conseguimos ver detalhes.&lt;/p&gt;

&lt;p&gt;Podemos salvar. E para compartilhar com integrantes da nossa organização, podemos ir em &lt;em&gt;Publish&lt;/em&gt;, no menu do topo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqtp3e28i5i93bm8qxpyi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqtp3e28i5i93bm8qxpyi.png" alt="Alt Text" width="800" height="95"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos selecionar o nosso &lt;em&gt;workspace&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkthclmmbm09vr08r39s2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkthclmmbm09vr08r39s2.png" alt="Alt Text" width="614" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E assim, ele publica o nosso relatório nesse &lt;a href="https://app.powerbi.com/" rel="noopener noreferrer"&gt;repositorio&lt;/a&gt;. Vamos acessa-lo.&lt;/p&gt;

&lt;p&gt;E na opção &lt;em&gt;Relatórios&lt;/em&gt;, podemos acessar a nossa pagina criada no Power BI Desktop.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fx5oh09be0k2tvtr1wczp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fx5oh09be0k2tvtr1wczp.png" alt="Alt Text" width="800" height="571"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;E lá está!&lt;/strong&gt; Nosso relatório pronto para ser compartilhado e distribuído para o resto da nossa organização.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpx5wx8vyfezpz4gkzrns.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpx5wx8vyfezpz4gkzrns.png" alt="Alt Text" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>powerbi</category>
    </item>
  </channel>
</rss>
