Automatizando Deploy com Git

12, março 2013   •   (Não há comentários)   •   Autor: Thiago Dieb
Ambiente de Desenvolvimento

Exemplo de um processo de deploy.

Como costumo dizer: “A necessidade faz o homem”. Este post é um resultado de uma necessidade que tinha há algum tempo.

Pretendo mostrar como fiz para automatizar deploys no ambiente de desenvolvimento, utilizando git hooks.

Para contextualização do ambiente onde trabalho, a baixo apresento a lista das máquina que utilizamos:

  • Servidor de desenvolvimento
  • Servidor com os repositórios
  • Máquinas locais dos desenvolvedores

Como funcionará

  1. No servidor com repositórios, no projeto X, criaremos o script de git hook que será chamando a cada git push.
  2. Teremos um script que criará um serviço no servidor de desenvolvimento que aguardará uma solicitação para efetuar o git pull na pasta do projeto.
  3. Habilitaremos o serviço em um processo contínuo.

Criando o script do Git Hook “post-receive”

No servidor dos repositórios onde tenho a pasta .git, vou adicionar o script que enviará uma solicitação cpara que o comando “git pull” seja executado no servidor de desenvolvimento.

Vou adicionar o arquivo “post-receive” na pasta “hooks” do projeto

touch /opt/projetos/meuprojeto.git/hooks/post-receive
chmod +x /opt/projetos/meuprojeto.git/hooks/post-receive

Adicionaremos no arquivo a chamada ao servidor de desenvolvimento no qual está aguardando a solicitação.

Esse script fará uma conexão utilizando o NetCat na porta 8080 e passará o texto “pull”.

#!/bin/bash
echo “—– DEPLOY ——”
echo pull | nc -v -w 1 IP_SERVIDOR_DESENVOLVIMENTO 8080 && echo “—– git pull success —–”