Build e Deploy automático com VSTS e Azure | iMasters
Nós, como desenvolvedores de software, temos a responsabilidade de distribuir o resultado do que desenvolvemos para nosso cliente com qualidade, e nada melhor do que automatizar todo o processo de build e deploy.
Quando estamos desenvolvendo, precisamos testar nossa aplicação, e muitas empresas, com certeza, têm uma equipe de QA, que garante as funcionalidades da aplicação. Para isso, precisa-se de um ambiente em específico para serem realizados os testes por essa equipe de QA.
Existem várias estratégias que podem ser adotadas para a implantação do deploy nesse ambiente específico. Às vezes é feito manualmente pelo desenvolvedor, mas nada melhor que existir um processo automático que faça tanto o build, tanto como o deploy no servidor.
No exemplo que vou passar à vocês, a estratégia vai ser criar dois servidores no Azure, um servidor de QA e um servidor de Produção. A promoção do pacote em produção também será de forma automática, depois de uma autorização feita por um usuário.
Todo meu código está sendo gerenciado pelo VSTS.
Criei uma API em ASP .NET Core e adicionei à minha conta no VSTS.
Primeiro passo, é criar uma definição de build no VSTS:
Criar uma nova definição de build
Clique em "+ New definition" e configure o build da seguinte forma:
Selecione o source TFVC, pois neste exemplo o código está sendo gerenciado pelo VSTS, mas poderemos criar definições de build para o Git, Bitbucket, Subversion e etc.
Curiosidade: Não necessariamente o VSTS fará build em aplicações em C#; poderá fazer build de outras linguagens***.
Seleção do repositório do fonte
Depois clique em "Continue > Empty Process".
Tela para adicionar passo a passo do build
Adicione esses passos na sequência, nesta definição de build.
Rode o build para verificar se está tudo certo. Se tiver, o build está como "executado com sucesso".
O segundo passo é criar os dois ambientes no Azure.
Criei no Azure a aplicação "alface.azurewebsites.net", que será o ambiente de pré-produção e o da aplicação repolho.azurewebsites.net, que será o ambiente de produção.
Para o funcionamento do deploy nesses ambientes, vamos usar a funcionalidade "Release" do VSTS. Essa funcionalidade serve para criar deploys em vários ambientes depois do build ser executado com sucesso, e a promoção a outros ambientes pode ser feita com a aprovação de um usuário.
Para se criar uma definição de Release, clique na aba "Releases" no VSTS
Definição de Release
Clique em "+ New definition" > "EmptyProcess" e configure o Release da seguinte forma abaixo:
Tela para configurar a definição de Release
Clique em "Add" em "Artifacts" para configurar o Build criado no passo anterior, como start do Release:
Configuração do Artifact
Para que quando o build for executado com sucesso, configure a trigger neste icone:
Habilitando a trigger
Logo após isso, temos que configurar que o pacote gerado pelo build seja implantado no servidor de pré-produção alface.azurewebsites.net.
Mude o nome do environment para "Pré-Produção", e clique no link conforme a figura abaixo para configurar o deploy.
Configuração do environment
Adicione a task Azure App Service Deploy:
Configuração da task do Azure
Configurado o ambiente de pré-produção, vamos criar o ambiente de produção:
Adicione um novo environment, e nomeie como "Produção".
Criação de ambiente de Produção
Logo após, crie uma task para esse ambiente de produção nos mesmos moldes de pré-produção.
Configuração da task para Produção
Depois de configurados os ambientes, vamos configurar para que quando o ambiente de Pré-Produção estiver atualizado com o deploy, algum usuário receberá um e-mail para a aprovação do deploy.
Sendo assim, depois de aprovado pelo usuário, a promoção ao ambiente de produção será feita de forma automática.
Clique no ícone conforme a figura abaixo para configurar:
Configuração do Pré-deployment por usuário
Habilite o "Pre-deployment" com aprovação do usuário e adicione o usuário que fará a aprovação para a promoção ao ambiente de produção.
Configurados todos os passos, vamos testar!
Rodaremos o build novamente, e depois do sucesso, vamos ver o deploy sendo feito no ambiente alface.azurewebsites.net.
Deploy sendo feito no alface.azurewebsites.net.
Release sendo executado
Deploy feito com sucesso
Ao abrir o alface.azurewebsites.net:
Api implantada no ambiente alface.azurewebsites.net
Enquanto isso, o ambiente repolho.azurewebsites.net, ainda sem o deploy.
Api ainda não implantada no ambiente repolho.azurewebsites.net
Logo após esse processo, um e-mail foi enviado para o usuário configurado no Pre-deployment do ambiente de Produção.
E-mail enviado para a aprovação do usuário
Ao clicar no email, irá abrir o VSTS para a aprovação da promoção ao ambiente de Produção, e aparecerá esse link para a aprovação ou reprovação da promoção no ambiente
Link para aprovação no VSTS
Ao clicar, abre-se um modal para a aprovação ou reprovação e um campo de descrição
Ao aprovar o deploy para o ambiente de produção.
Deploy sendo executado
Deploy com sucesso
Ao abrir o repolho.azurewebsites.net.
Ambiente de Produção repolho.azurewebsites.net
Bom, neste caso fizemos um fluxo de como usar o VSTS e Azure, para o Build e Deploy automático em ambientes Pré-Produção e Produção. Pode ser feito em N servidores e a aprovação, por vários usuários.
Esse processo é simples e organizado para a melhor gestão de nosso código e o gerenciamento de pacotes, sem depender de alguma forma manual.