Normalmente, um aplicativo da web Ruby on Rails (ou qualquer pilha em JVM, .Net, Python, Node.js ou PHP) precisa ser implementado em dois ou mais servidores remotos, pelo menos um para teste e outro para produção.
Atualizar
Esta é uma versão atualizada da dica, pois estávamos migrando para Rails 4 e Capistrano 3
O processo
Já que estamos usando git, temos pelo menos três branches
- mestre onde tudo o que está funcionando e pronto para implantação está
- teste para a versão a ser testada no servidor de teste
- produção para a base de código pronta para produção
master -> (mesclar para) -> teste -> (mesclar para) -> produção
Este processo não levantará nenhum problema de mesclagem, pois o fluxo de trabalho é linear e o git fará isso avançando rapidamente os pontos de confirmação. Todos os problemas acontecem ao mesclar vários ramos dev para master, mas isso é outra história 🙂
Quando chega a hora de implantar com frequência, torna-se irritante repetir a sequência do git checkout ...
então, git merge
então, git push
então cap deploy
.
Criei um script bash simples para abstrair todas essas etapas.
Os scripts que economizam tempo
#!/usr/bin/env bash
git add . && git commit -am "$1" && git push origin master && git checkout staging && git merge master && git push origin staging && git checkout master && cap staging deploy
Salve em RAILS_ROOT / bin / deploystaging e torne-o executávelchmod u+x bin/deploystaging
O mesmo para a produção
#!/usr/bin/env bash
git checkout production && git merge staging && git push origin production && git checkout master && cap production deploy
Salve este em RAILS_ROOT / scripts / deployproduction e torne-o executávelchmod u+x deployproduction
Usando isso
Agora, depois de trabalhar em qualquer branch e fazer alterações no master , todos os testes verdes, faça
cd RAILS_ROOT
./bin/deploystaging "Commit message here"
#OR
./bin/deployproduction
Capistrano 3 é inteligente o suficiente para detectar qualquer migração pendente, então não há mais necessidade de sinalizar migrações como no Capistrano 2.
Isso é tudo, boa implantação!