KISS - Keep it simple, stupid!

Fazendo deploy de uma aplicação CakePHP com Git

postado por Gabriel Gilini em 02/03/2009 15:35:47
Tags: , ,

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:

  1. Plugin Manager – Gerenciando os plugins de sua aplicação de forma ágil Já tinha visto muitas vezes o João José reclamando que...

Trackback

Faça o seu

Comentários (4)

  • 001

    Rodrigo Moyle

    em 20/03/2009 14:12:45

    Pra 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:49

    O 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:41

    No 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:43

    Agora a gente tá usando o Capistrano (http://www.capify.org/) pra automatizar o processo de deploy. Muito bom e fácil de usar

  • Faça seu comentário

Topo

4 Comentários

Creative Commons License
Sou Ágil: KISS em http://kiss.souagil.com.br está licenciado sobre
Creative Commons Attribution-Share Alike 2.5 Brazil License.

souÁgil