O documento apresenta a ferramenta Mina para deploy de aplicações Ruby. Mina é baseada em tarefas e permite implantações seguras através de safe deploys e deploy locks. O processo de deploy com Mina envolve a criação de um arquivo de configuração deploy.rb e a execução dos comandos "mina setup" e "mina deploy".
2. Sobre
• Web developer (back and front-end)
• Atualmente na Celtec Rastreamento Ltda
• Desenvolvemos software de rastreamento de
veículos, cargas, etc.
• Usamos: Ruby, Rails, Postgres, Backbone.js,
Google Maps API, Redis, ...
• Estamos contratando :)
2
6. O que é Mina?
• Ferramenta de deploy (implantação)
• Usada também para automatizar a administração
do servidor
• É "rake based"
6
7. E o que é "rake based"?
• Fluxo de trabalho baseado em tarefas
• Pode seguir o fluxo ou executar tarefas específicas
(é aqui que entra a parte de automação do
servidor)
• Você conta com safe deploys
7
9. O que são safe deploys?
• Nada é alterado no servidor até que o build atual
seja concluído sem erros
• Você pode manter várias versões no servidor e
isso é configurável no seu deploy.rb
• Possui deploy locks para a sua proteção
9
10. O que são deploy locks?
• Controla os deploys baseado em lock files
• Deploy só inicia se conseguir pegar o lock file
• Garante que apenas 1 deploy ocorre a cada
momento (para cada aplicativo)
10
12. Usando o mina
• Instale via "gem install mina" ou via bundler com
"gem 'mina'" no seu group :development
• Inicialize em seu projeto com "mina init"
• Ajuste seu arquivo config/deploy.rb
12
14. Entendo o mina init
• Cria um diretório config se não exisitr
• Cria um arquivo deploy.rb nesse diretório
• Esse arquivo possui todas as configurações para o
deploy da sua aplicação
14
16. Olhando o deploy.rb de
perto
• É um rake file disfarçado :)
• Pode possuir quantas tasks forem necessárias,
mas possui 3 seções principais
• Definições, Ambiente e Deploy
16
18. Mina setup
• Precisa ser executado apenas 1 vez
• Cria a estrutura de diretórios no servidor para
implantar a aplicação
• Pode ser customizado no deploy.rb
18
20. Mina deploy
• Cria um diretório temporário para fazer o build do
projeto (tudo que está no bloco deploy)
• Move o diretório de build para releases
• Cria um link simbólico para current
• Executa o bloco "to :launch"
20
21. E se acontecer algum erro?
• Caso isso aconteça o link para o release path será
apagado (mas não a pasta da versão dentro de
releases)
• O bloco "to :clean" será executado caso tenho
sido definido
• Importante apagar ou mover a versão quebrada
que ficou no releases (você não vai querer ter no seu
histórico de versões uma que pode não funcionar)
21
22. Tips & Tricks (1)
• Certifique-se que o usuário de deploy possui
acesso de leitura e escrita nos diretórios
• Se precisar alterar a estrutura do server, melhor
apagar e começar do zero novamente
• Não esqueça de adicionar a chave ssh do seu
repositório no servidor antes de rodar mina deploy
22
23. Tips & Tricks (2)
• Você pode ter vários arquivos de deploy.rb (o
nome não importa)
• Use o parâmetro -f para indicar um arquivo com
nome diferente de deploy.rb ou em localização
diferente
• Use os parâmetros -v e -t para ter mais detalhes
da execução remota
23