Git-to-Git: Migração Manual de Repositórios

Recentemente tive a necessidade de fazer uma migração de repositórios Git na empresa em que eu trabalho (TFS Git para Gitlab). Apesar de as ferramentas atuais já fornecerem algumas funcionalidades para fazer isso de maneira intuitiva (pela UI, por exemplo), precisei fazer isso manualmente.

A migração Git-to-Git é extremamente simples (ao contrário do cenário TFS (TFVC) para Git). Basta clonar (mirror) o repositório origem, remover a referência antiga(origin), adicionar a nova e fazer o pull.

Para exemplificar, fiz uma migração de Gitlab para AzureDevOps. O procedimento abaixo migra todos os branches, histórico (commits) e tags:

Repositório Origem (Gitlab): https://gitlab.com/Marcel_Goldhardt/test1.git
Repositório Destino (Azure DevOps): https://dev.azure.com/ocaradoazure/migration/_git/migration

git clone --mirror https://gitlab.dell.com/Marcel_Goldhardt/test1.git .
git fetch --tags --all
git remote rm origin
git remote add origin https://dev.azure.com/ocaradoazure/migration/_git/migration
git push origin --all
git push --tags
Origem: Repositório no Gitlab
Destino: Repositório no Azure DevOps

Global Azure Bootcamp 2018 – Um Sucesso!

Azure Bootcamp 2018 - Porto Alegre - Palestrantes
Palestrantes do Evento

Sábado, 21 de abril – feriado nacional. Para complicar ainda mais, muita chuva em Porto Alegre. Entretanto, um SHOW da comunidade técnica Microsoft: auditório LOTADO! Mais de 100 pessoas investiram seu tempo e prestigiaram esse tradicional evento global que acontece todos os anos. Esta edição aconteceu no moderno auditório Global Tecnopuc, localizado dentro da PUC/RS. Este ano o evento foi organizado pelo Diego Moreira Matos e o MVP Rafael Felipe, contando com a gigante ajuda da Microsoft Community of Practices da Dell. Um teamwork poucas vezes visto.

Novamente tive a honra de palestrar no evento, desta vez com o assunto “Serviços Grátis do Azure“. Já fui dono de empresa do passado, e sei como é difícil começar um negócio, principalmente no que se refere a gastos. Já fui estudante e deixei de utilizar algumas tecnologias porque “precisava pagar”. O Azure possui uma série de serviços grátis que pode ajudar estes dois públicos a dar o pontapé inicial nos seus projetos.

As palestras tiveram um excelente nível técnico, com o público engajado o tempo inteiro. Simplesmente, UM SUCESSO! Até o ano que vem!

Azure Continuous Delivery em 9 minutos

Neste vídeo explico como configurar o Azure Continuous Delivery para sua aplicação Web. Esta nova feature do AppService nos permite implementar o Continuous Integration/Deployment rapidamente e de maneira muito fácil.

Cenário:

  • Código na máquina do desenvolvedor (standalone)
  • Criação do repositório Git local
  • Criação do repositório remoto (Github) e sincronização
  • Criação do projeto de build no Visual Studio Team Services
  • Configuração de build e deploy diretamente no Azure Portal

Tudo isso em 9 minutos!

 

Nota: não está no vídeo, mas você poderia ainda integrar um mecanismo de notificações utilizando o Zapier e o Twilio. Ao fim de cada deploy (com sucesso, mas principalmente falha) você poderia receber uma chamda de voz). A implementação é muito semelhante a deste post.

Azure CLI 2.0 no Linux Bash do Windows

O Azure CLI 2.0 é uma poderosa ferramenta de linha de comando (Command Line Interface), que pode ser usada tanto no Windows, Linux ou macOS. Com ela é possível gerenciar e administrar os seus recursos no Microsoft Azure de maneira bastante simples e intuitiva. É um projeto open source (https://github.com/Azure/azure-cli).

Na semana passada assisti o video do MVP Rodrigo Crespi, sobre como instalar o bash do Linux (Ubuntu) no Windows. Foi então que pensei no conteúdo deste post: instalar o Azure CLI 2.0 no bash do Linux Subsystem, provisionar alguns recursos no Azure via linha de comando, e então fazer deploy de um repositório Git remoto para estes. O procedimento é simples, vamos lá:

  • Se ainda não tiver instalado o Windows Subsystem for Windows, recomendo que você assista o vídeo
  • Abra o bash, e execute os comandos a seguir:
echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ wheezy main" | \
     sudo tee /etc/apt/sources.list.d/azure-cli.list
sudo apt-key adv --keyserver packages.microsoft.com --recv-keys 417A0893
sudo apt-get install apt-transport-https
sudo apt-get update && sudo apt-get install azure-cli

 

  • Terminada a instalação com sucesso (a minha levou em torno de 5 minutos), podemos começar a utilizar o Azure CLI 2.0. Meu objetivo neste ponto, é criar uma Azure WebApp no plano grátis. Será necessário efetuar o login, criar um Resource Group, Application Plan e então a WebApp:
# Efetuar login no Azure
# Será necessário acessar https://aka.ms/devicelogin e fornecer o código de autenticação,
# após a execução do comando abaixo
az login

# Criar um Resource Group
# Nota: substitua "AzureCLIDemoRG" pelo nome do seu Resource Group
az group create --location brazilsouth --name AzureCLIDemoRG

# Criar um Service Plan
# Nota 1: substitua "AzureCLIDemoSP" pelo nome do seu Service Plan
# Nota 2: substitua "AzureCLIDemoRG" pelo nome do seu Resource Group criado no passo anterior
az appservice plan create --name AzureCLIDemoSP --resource-group AzureCLIDemoRG --sku FREE

# Criar a WebApp
# Nota 1: substitua "AzureCLIDemoWebSite" pelo nome do sua WebApp - será usado na URL de acesso (http://AzureCLIDemoWebSite.azurewebsites.net) 
# Nota 2: subsitua "AzureCLIDemo" e "AzureCLIDemoSP" pelos valores criados anteriormente
az webapp create --name AzureCLIDemoWebSite --resource-group AzureCLIDemoRG --plan AzureCLIDemoSP

 

  • WebSite criado, basta acessa-lo:

Azure CLI - Ubuntu Bash Windows - Azure WebApp Default Page

 

Instalando o Git:

sudo apt install git

 

Criando o reposiório local e adicionando os arquivos da aplicação:

  • Assumindo que os arquivos da minha aplicação estão em C:\AzureCLIDemo, estes são montados em /mnt/c/AzureCLIDemo, crie o repositório local:
git init .

 

  • Adicione os arquivos e faça commit ao master branch:
git add .
git commit -m "Primeiro commit da Demo Azure CLI 2.0 com Git"

 

  • Observação: talvez apareça uma mensagem de erro, solicitando configuração de e-mail e nome. Para adicionar esses dados execute o comando abaixo e efetue o commit novamente:
git config --global user.email "seu@email.com"
git config --global user.name "seunome"

 

A partir desse momento já poderíamos rodar o deploy a partir do reposiório local, entretanto vamos mais longe. O próximo passo será sincronizar meu repositório local com um repositório remoto (no Visual Studio Team Services).

 

Criando o repositório Git no Visual Studio Team Services:

  • Se você ainda não tem uma conta no VSTS, será necessário criar (free): https://www.visualstudio.com/vso/
  • Uma vez criada sua conta, crie um novo projeto, setando Version Control como Git:

Azure CLI - Ubuntu Bash Windows - Criando Projeto Git no VSTS

  • Configure as credenciais – a url será necessária no proximo passo:

Azure CLI - Ubuntu Bash Windows - Configurando Credenciais

 

  • Sincronizando o repositório local com o remoto (branch master X master):
# Referenciando reposiório remoto
git remote add origin https://SUACONTA.visualstudio.com/_git/AzureCLIDemo

# Push: enviando os arquivos locais para o VSTS
git push origin master

 

  • Assim que o processo de push terminar, é possível visualizar seus arquivos no VSTS:

Azure CLI - Ubuntu Bash Windows - Arquivos Master Branch Remoto VSTS

 

  • Utilizando o Azure CLI 2.o para efetuar o deploy:
az webapp deployment source config --name AzureCLIDemoWebSite --resource-group AzureCLIDemoRG --repo-url https://SUACONTA.visualstudio.com/_git/AzureCLIDemo --branch master --manual-integration

 

  • Resultado:

Azure CLI - Ubuntu Bash Windows - Resultado Deploy

Atenção: o Azure CLI possui atualizações frequentes, geralmente a cada duas semanas – inclusive comandos listados neste post estão sujeitos a alteração. Como a instalação foi feita a partir do apt-get, o comando az component não é suportado. Para atualizar, execute o comando a seguir:

sudo apt-get update && sudo apt-get install azure-cli

Lembrete: Azure CLI é conteúdo do exame 70-533.

Até a próxima!
[ ]´s