Fazendo deploy de uma aplicação CakePHP com Git
Deploy é sempre um problema sério. Estamos sempre buscando soluções que minimizem o trabalho manual na hora de subir os arquivos para o servidor e deixá-los prontos para produção.
Em um projeto que temos, utilizamos o próprio Git para fazer esta tarefa, afinal o repositório central já fica lá no servidor mesmo, nada mais óbvio.
Então sempre que temos uma versão que está estável para produção, nos logamos por ssh e mandamos um git pull no diretório onde fica o site. Geralmente o merge ocorre sem problemas e fica tudo atualizado. Mas o problema é que os arquivos de configuração sempre são substituidos, e toda vez o trabalho de consertar as configurações de banco, colocar o debug pra 0, entre outras coisinhas (que sempre passam desapercebidas) é feito à mão.
Hoje, depois de fazer isso pelo menos umas 3 vezes, me lembrei que o Git tem um comando que poderia servir perfeitamente pra evitar toda essa edição manual na hora do deploy. É o git stash.
Agora, antes de executar o git pull, eu digito git stash save “Salvando configurações de produção”; com isso o git guarda os arquivos modificados em um local “invisível”, e executa um git reset –hard, que retorna todos os arquivos à versão HEAD. Aí o diretório fica limpo para receber o merge sem problemas.
Depois que o git pull for completo, é só digitar git stash apply que ele retorna todas as mudanças que você tinha guardado, e sua aplicação está pronta pra receber visitas.
Update: eu não havia dito pois não tinha certeza, mas acabei de verificar que o git stash apply não simplesmente recupera o arquivo “stashado”, mas aplica somente as mudanças que você havia guardado, preservando o que mudar com o git pull. Nice!
Posts relacionados:
- Plugin Manager – Gerenciando os plugins de sua aplicação de forma ágil Já tinha visto muitas vezes o João José reclamando que...
Comentários (4)
-
001
Rodrigo Moyle
em 20/03/2009 14:12:45Pra evitar esse tipo de problemas, eu prefiro não incluir os arquivos de configuração no reposítório.
Eu sempre dou um gitignore no app/config/database.php
E acho que uma outra solução viavel com o git seria fazer um hook que verifica o arquivo de configurações antes de fazer o deploy. -
002
Gabriel Gilini
em 20/03/2009 14:28:49O problema de não colocar os configs é que se você der um clone em algum lugar tem que adivinhar como eles deveriam estar.
Quanto ao hook, esse sim seria uma solução ótima, o stash é “quick and dirty” mesmo haha.
Obrigado pelo comentário! -
003
Rodrigo Moyle
em 14/04/2009 21:29:41No caso, se você não colocar os configs no repositório o mais correto seria fazer uma manual de instalação da aplicação, assim se alguém fizer um fork saberá como configurar essa app.
-
004
Gabriel Gilini
em 14/04/2009 21:45:43Agora a gente tá usando o Capistrano (http://www.capify.org/) pra automatizar o processo de deploy. Muito bom e fácil de usar




