Essa semana eu publiquei na web o Recast, uma aplicação para criar podcasts. Queria fazer ela rápido, sem custo, sem dor de cabeça. Podia fazer com Ruby e Heroku, mas eu já fiz isso antes. Então experimentei fazer com ASP.NET MVC e Azure. E o Azure é grande pra caramba, e o Azure Compute (big brother Azure), que foi a primeira tecnologia que surgiu com o Azure, não é a melhor para publicar. O Web Sites é mais rápido e já traz integração pronta com o Git.

Se você quiser ver eu publicando nodejs com git direto, sem github, veja esse vídeo que fiz no final do ano passado na Lambda3TV: Publicando uma app Nodejs no Azure em menos de 5 minutos

Criando o site no Azure

Para criar um website no Azure é super simples:

Criando website no azure

O site sempre é criado em uma instância gratuita. Você tem direito a 10 instâncias grátis por região, e há cinco regiões, ou seja, você tem direito a 50 sites gratuitos. Pra entender quanto isso custa veja aqui.

Selecione o site:

image

Ele vai abrir. Essa é a dashboard:

image

Ela mostra várias estatísticas de uso interessante e permite administrar a app.

Habilitando git no Azure

Pra habilitar o git você vai em “Set up Git Publishing”, no canto inferior direito. Ele vai demorar uns 3 segundos…

image

… e vai criar o repositórios de git pra você:

image

Criando o repositório local

Como vocês podem ver, é possível publicar via git diretamente, já que ele te entrega a url do repositório git do Azure. Foi dessa forma que fiz no vídeo de node que mencionei acima. Basicamente nesse cenário você pega um repositório git que já tem e faz:

git remote add azure https://[email protected]/bloglambda3.git
git push azure master

Mas nesse post vou linkar com o Github. E é bem simples. Criei um repositório git simples e coloquei o projeto lá:

image

Peguei um projeto simples de ASP.NET MVC 4, sem nada. coloquei ele no repositorio:

image

E commit!

image

Coloquei um home controller e uma view só pra ter o que mostrar.

Criando o repositório no Github e configurando local

Fui no github criei um projeto:

image

Coloquei o repositório remoto do github nos meus remotes e pushei o commit pra lá (bonito esse verbo, não?):

image

Configurando o Azure para publicar a partir do Github

Agora é só ir no manager do azure e adicionar ele. Clique em authorize windows azure debaixo de Deploy from github:

image

O Azure vai te mostrar todos os projetos seus e os que você pode adminstrar. Escolha o projeto correto dê um ok:

image

Como já tinha coisa no repositório, ele já vai publicar. E vai falhar:

image

O problema é o nuget. Você precisa habilitar a restauração de pacotes. Faça isso no Visual Studio:

image

E faça um commit e push das suas alterações. Você vai precisar incluir o diretório .nuget manualmente (veja o parâmetro –force) porque ele começa com ponto (.):

image

O push para o github vai iniciar um novo deploy. Em uns 2 ou 3 segundos após o push terminar você já verá o azure iniciando deploy.

image

E em mais uns 10 segundos dessa vez ele vai passar:

image

Você pode ver o log do deploy:

image

E com muitos detalhes se quiser, clicando em View Log:

image

Clicando no botão Browse, que fica centralizado bem no meio da tela, abaixo, você é levado até sua página no domínio azurewebsites.net. A minha ficou em bloglambda3.azurewebsites.net:

image

Pra atualizar é muito rápido, você pode ir no projeto, alterar, commit e push:

image

E você verá um novo deploy, atualizado, em alguns segundos:

image

image

Note que aparece a mensagem do último commit publicado.

Publicando só quando você quer

Talvez você não queira que todo push gere uma publicação, e queira controlar quando ela acontece. Nesse caso, crie um branch. Aqui chamei o meu de release e mandei ele também pro github:

image

Vá no azure, e troque o nome do branch nas configurações (aba configure):

image

Agora, quando faço atualizações no branch master, elas não são publicadas. Como publicar? Volte para o branch release e faça um merge e um push:

image

Um pouco de diversão: publicando sem o repositório local

Descobriu um bug, está fora de casa, sem Visual Studio, sem o seu código, tem que arrumar agora, via web? Vá ao Github, e edite o arquivo (atente para fazer a alteração no branch de release):

image

image

image

E vai ser publicado!

image

image

Não faça disso prática comum. Edições não devem acontecer no branch de release. Depois volte no seu repositório local e faça um pull no branch de release, e merge para o branch master.

E é isso. Agora, sempre que o branch for atualizado a aplicação vai ser publicada! Divirtam-se!

Giovanni Bassi

Arquiteto e desenvolvedor, agilista, escalador, provocador. É fundador e CSA da Lambda3. Programa porque gosta. Acredita que pessoas autogerenciadas funcionam melhor e por acreditar que heterarquia é mais eficiente que hierarquia. Foi reconhecido Microsoft MVP há mais de dez anos, dos mais de vinte que atua no mercado. Já palestrou sobre .NET, Rust, microsserviços, JavaScript, TypeScript, Ruby, Node.js, Frontend e Backend, Agile, etc, no Brasil, e no exterior. Liderou grupos de usuários em assuntos como arquitetura de software, Docker, e .NET.