deploy de aplicações ruby com mina - tdc floripa 2014

24
Deploy de aplicações Ruby com Mina Ismael Stahelin TDC Floripa 2014 1

Upload: stahelinismael

Post on 20-Jun-2015

240 views

Category:

Technology


1 download

DESCRIPTION

Apresentação da ferramenta mina, utilizada para realizar o deploy de aplicações Ruby.

TRANSCRIPT

Page 1: Deploy de aplicações Ruby com Mina - TDC Floripa 2014

Deploy de aplicações Ruby com Mina

Ismael Stahelin TDC Floripa 2014

1

Page 2: Deploy de aplicações Ruby com Mina - TDC Floripa 2014

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

Page 3: Deploy de aplicações Ruby com Mina - TDC Floripa 2014

Sem mais demora...

3

Page 4: Deploy de aplicações Ruby com Mina - TDC Floripa 2014

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

Page 5: Deploy de aplicações Ruby com Mina - TDC Floripa 2014

Agora vamos aos detalhes...

5

Page 6: Deploy de aplicações Ruby com Mina - TDC Floripa 2014

O que é Mina?

• Ferramenta de deploy (implantação)

• Usada também para automatizar a administração do servidor

• É "rake based"

6

Page 7: Deploy de aplicações Ruby com Mina - TDC Floripa 2014

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

Page 8: Deploy de aplicações Ruby com Mina - TDC Floripa 2014

Um exemplo de tarefa

8

Page 9: Deploy de aplicações Ruby com Mina - TDC Floripa 2014

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

Page 10: Deploy de aplicações Ruby com Mina - TDC Floripa 2014

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

Page 11: Deploy de aplicações Ruby com Mina - TDC Floripa 2014

Parece ótimo mesmo, e como eu uso essa

maravilha?

11

Page 12: Deploy de aplicações Ruby com Mina - TDC Floripa 2014

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

Page 13: Deploy de aplicações Ruby com Mina - TDC Floripa 2014

Exemplo completo de deploy.rb

https://gist.github.com/ismaels/c72bb805ff91a5cab242

13

Page 14: Deploy de aplicações Ruby com Mina - TDC Floripa 2014

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

Page 15: Deploy de aplicações Ruby com Mina - TDC Floripa 2014

Um exemplo... Quase ao vivo

http://youtu.be/2R-RZfmjAlk

15

Page 16: Deploy de aplicações Ruby com Mina - TDC Floripa 2014

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

Page 17: Deploy de aplicações Ruby com Mina - TDC Floripa 2014

Principais seções

17

Page 18: Deploy de aplicações Ruby com Mina - TDC Floripa 2014

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

Page 19: Deploy de aplicações Ruby com Mina - TDC Floripa 2014

Estrutura de diretórios no servidor

19

Page 20: Deploy de aplicações Ruby com Mina - TDC Floripa 2014

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

Page 21: Deploy de aplicações Ruby com Mina - TDC Floripa 2014

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

Page 22: Deploy de aplicações Ruby com Mina - TDC Floripa 2014

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

Page 23: Deploy de aplicações Ruby com Mina - TDC Floripa 2014

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

Page 24: Deploy de aplicações Ruby com Mina - TDC Floripa 2014

[email protected] http://ismaelstahelin.com http://github.com/ismaels

@ismaels

24