Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Deploy de aplicações Ruby com Mina

Deploy de aplicações Ruby com Mina

O que é, e como utilizar a gem 'mina' para realizar o deploy de aplicações Ruby e/ou Rails.
Apresentação realizada no TDC Floripa 2014.

Ismael Stahelin

May 17, 2014
Tweet

Other Decks in Programming

Transcript

  1. 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
  2. Os 4 passos para o deploy 1. Criar o arquivo

    config/deploy.rb 2. Definir servidor, repositório, branch, etc. 3. Executar "mina setup" (somente 1 vez) 4. Executar "mina deploy" 4
  3. O que é Mina? • Ferramenta de deploy (implantação) •

    Usada também para automatizar a administração do servidor • É "rake based" 6
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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