Bricklayer
A serious business

     Rodrigo Vaz
Agenda
1.   Motivação
2.   O inicio
3.   Tretas
4.   Fails
5.   Planos
6.   ?
Motivação
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



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



Capistrano é gambiarra.
O Inicio
O problema:
"Pacote é dificil de criar"


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

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

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




Solução 2:
Servidor de build, API REST. <- Bricklayer
was born
Tecnologias
●   cyclone - Twisted
●   dpkg-buildpackage
●   rpmbuild
●   redis
●   twitter bootstrap
Tretas
●   RubyGems HELL
●   Cada projeto com um modo de deploy
●   Uma API rest não é suficiente
●   Interface grafica*
●   Adaptação ao fluxo de deploy
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
Cada projeto com um modo de deploy
Uma API rest não é suficiente
Interface gráfica
Interface gráfica
Interface gráfica
Adaptação ao fluxo de deploy - Resistance

Wins:

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

Foi fácil convencer.
Fails

●   Driver do redis meio instável e vendorizado *
●   Bug para deletar projetos *
●   Poucas contribuições
●   Falta de tempo
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
?
Thanks for watching!

Bricklayer

  • 1.
  • 2.
    Agenda 1. Motivação 2. O inicio 3. Tretas 4. Fails 5. Planos 6. ?
  • 3.
    Motivação Como o developerquer fazer o deploy? rodrigo ~ $ ssh producao -l root root@producao ~ $ git clone https://github.com/user/app.git root@producao ~ $ cd app; ./sobe_aplicacao 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 Capistrano é gambiarra.
  • 4.
    O Inicio O problema: "Pacoteé dificil de criar" Solução 1: Um script que cria pacote. Nah.
  • 5.
    O Inicio ... Outroproblema: "Uso Mac OS e textmate, não tem dpkg na AppStore!" Solução 1: Trabalhe num OS mais produtivo. (Linux - debian-like) Solução 2: Servidor de build, API REST. <- Bricklayer was born
  • 7.
    Tecnologias ● cyclone - Twisted ● dpkg-buildpackage ● rpmbuild ● redis ● twitter bootstrap
  • 8.
    Tretas ● RubyGems HELL ● Cada projeto com um modo de deploy ● Uma API rest não é suficiente ● Interface grafica* ● Adaptação ao fluxo de deploy
  • 9.
    RubyGems HELL ● RubyGemsfora 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
  • 10.
    Cada projeto comum modo de deploy
  • 11.
    Uma API restnão é suficiente
  • 12.
  • 13.
  • 14.
  • 15.
    Adaptação ao fluxode deploy - Resistance Wins: ● Deploy fácil ● Seguro ● Sem gcc em prod ● Rollback fácil Foi fácil convencer.
  • 16.
    Fails ● Driver do redis meio instável e vendorizado * ● Bug para deletar projetos * ● Poucas contribuições ● Falta de tempo
  • 17.
    Planos ● Trigger debuilds via API ● .bricklayer.yml options: auto_changelog: false rvm: 1.9.3@gemset deps: libapache-mod-passenger package_types: - deb - rpm ● LXC
  • 18.
  • 19.