Bricklayer

19
Bricklayer A serious business Rodrigo Vaz

Transcript of Bricklayer

Page 1: Bricklayer

BricklayerA serious business

Rodrigo Vaz

Page 2: Bricklayer

1. Motivação2. O inicio3. Tretas4. Fails5. Planos6. ?

Agenda

Page 3: Bricklayer

Motivação

Como um deploy deve ser ?root@producao ~ $ apt-get update && apt-get install seu-projeto

root@producao ~ $ ps aux | grep configuration_manager | wc -l

1

Como o developer quer fazer o deploy?rodrigo ~ $ ssh producao -l root

root@producao ~ $ git clone https://github.com/user/app.git

root@producao ~ $ cd app; ./sobe_aplicacao

Capistrano é gambiarra.

Page 4: Bricklayer

O Inicio

Nah.

O problema:"Pacote é dificil de criar"

Solução 1:Um script que cria pacote.

Page 5: Bricklayer

O Inicio ...

Solução 2:Servidor de build, API REST. <- Bricklayer was born

Outro problema:"Uso Mac OS e textmate, não tem dpkg na AppStore!"

Solução 1:Trabalhe num OS mais produtivo. (Linux - debian-like)

Page 6: Bricklayer
Page 7: Bricklayer

Tecnologias

● cyclone - Twisted● dpkg-buildpackage● rpmbuild● redis● twitter bootstrap

Page 8: Bricklayer

Tretas

● RubyGems HELL● Cada projeto com um modo de deploy● Uma API rest não é suficiente● Interface grafica*● Adaptação ao fluxo de deploy

Page 9: Bricklayer

RubyGems HELL

● RubyGems fora do ar = Build Failed○ gems.locaweb.com.br

● Versões de Ruby (1.8, 1.9, 1.9.1, 1.9.2 ...)● Versões das deps (libxml, passenger, etc..)● Projetos usando gems --pre ● RVM

Page 10: Bricklayer

Cada projeto com um modo de deploy

Page 11: Bricklayer

Uma API rest não é suficiente

Page 12: Bricklayer

Interface gráfica

Page 13: Bricklayer

Interface gráfica

Page 14: Bricklayer

Interface gráfica

Page 15: Bricklayer

Adaptação ao fluxo de deploy - Resistance

Wins:

● Deploy fácil● Seguro● Sem gcc em prod● Rollback fácil

Foi fácil convencer.

Page 16: Bricklayer

Fails

● Driver do redis meio instável e vendorizado *● Bug para deletar projetos *● Poucas contribuições● Falta de tempo

Page 17: Bricklayer

Planos

● Trigger de builds via API ● .bricklayer.yml

options:

auto_changelog: false

rvm: 1.9.3@gemset

deps: libapache-mod-passenger

package_types:

- deb

- rpm

● LXC

Page 18: Bricklayer

?

Page 19: Bricklayer

Thanks for watching!