Deploy com GIT

Fazer deploy de aplicações faz parte da rotina de todo desenvolvedor; e dependendo da sua aplicação, pode ser algo que vc queira automatizar. Para isso uma dica que aprendi essa semana é usar o GIT para submeter seu código no servidor; não apenas como um repositório, mas para automatizar os comandos necessários para fazer sua aplicaçao funcionar em ambiente de homologação/produção.

Criando o repositório no servidor

Acesse o servidor que vai receber o deploy usando SSH.

ssh usuario@sevidor.com.br 

Lembre-se de trocar “usuario” e “servidor” por suas credenciais e servidor respectivamente.

Crie o diretório que vai receber os arquivos do deploy.

[usario@servidor]$ mkdir /diretorio/do/deploy

Acesse o diretório criado e inicie um repositório com a opção --bare

[usario@servidor]$ cd /diretorio/do/deploy
[usario@servidor]$ git init --bare .

Nas Referências vc vai encontrar uma explicação mais detalhada, mas em resumo um diretório “bare” é um diretório que apenas recebe os arquivos (ou pushable), i.e. vc não consegue fazer um git add ou um git commit a partir desse diretório. No nosso caso, tal diretório foi criado com --bare porque ele vai apenas receber os arquivos do deploy, não vamos modificar código a partir dele.

Usando o git hooks/post-receive

Depois disso vamos usar git hooks para automatizar o processo de de deploy quando nosso diretório receber um push. Para isso acesse o arquvio post-receive dentro do diretório hooks.

[usario@servidor]$ vim /diretorio/do/deploy/hooks/post-receive

Você pode usar o editor de texto que preferir ;-)

Como conteúdo do arquivo digite os seguinte comandos:

#!/bin/sh
GIT_WORK_TREE=/diretorio/do/deploy git checkout -f

Salve o arquivo e depois conceda permissões de execução.

[usario@servidor]$ chmod 777 /diretorio/do/deploy/hooks/post-receive

O que fizemos foi editar um arquivo que será executado a cada push recebido no diretório. Vc pode inserir outros comandos que sejam usados para deploy; por exemplo cópia de arquivos estáticos, atualização de arquivos do servidor web/aplicação, etc.

Adicionando o repositório deploy

Agora vamos configurar o repositório no nosso projeto que vai receber os pushes para deploy:

git remote add deploy usuario@servidor.com.br:/diretorio/do/deploy

Feito isso, sempre que quiser fazer o deploy basta executar o seguinte comando:

git push deploy master

Será solicitado a sua senha de acesso SSH ao servidor de deploy. No servidor os arquivos serão submetidos e o código no post-receive será executado. Seu deploy estará completo.

Obrigado ao Wesley pelo post no qual aprendi essa facilidade.

Referências

Post em que aprendi o deploy com GITWesley Serafim de Araújo
GIT hooks – ações realizadas pelo GIT ao receber um push
Repositório –bare no GIT – o que é um repositório criado com a opção “–bare”
Diferença entre bare e init – explicação no Stackoverflow sobre a diferença entre repósitórios criados com git init e git init --bare