Testando aplicativo Rails com drone

Tutorial curto sobre como configurar o drone para testar o aplicativo rails 4 em execução no ruby ​​2.1.

Para nós que trabalhamos no setor de pagamentos, é importante manter todo o código-fonte dentro da empresa, por causa dos requisitos do PCI-DSS (tenho quase certeza disso).

Por muito tempo, usamos jenkins para testes de execução automática, mas depois que vi codeship.io, quero algo igualzinho. Estou tentando uma versão auto-hospedada de drone.io , é compilado em Go e usa Docker dentro.

Atualmente executo em máquina virtual, com ubuntu.

Usei esta documentação http://drone.readthedocs.org/en/latest/install.html

$ wget http://downloads.drone.io/latest/drone.deb
$ dpkg
-i drone.deb
$ drone start

# docker is running on http://localhost:80
$ apt
-get install docker.io

Então demorei um pouco para entender como fazê-lo construir meu código, então o clonado no servidor e executei dentro da pasta do app:

drone build .

Para testar .drone.yml sem confirmação

Drone é lido .drone.ymlcomo um cenário para executar testes, aqui está o que usamos:

image: bradrydzewski/ruby:2.1.1
script
:
- cp config/database.drone.yml config/database.yml
- mkdir -p /tmp/bundler
- sudo chown ubuntu:ubuntu /tmp/bundler
- bundle install --path=/tmp/bundler --deployment --quiet
- mysql -u root -h127.0.0.1 -P 3306 -e 'create database rails_app_test;'
- mysql -u root -h127.0.0.1 -P 3306 -D rails_app_test < ./db/structure.sql
- bundle exec rspec spec
services
:
- mysql
cache
:
- /tmp/bundler
notify
:
email
:
recipients
:
- our.team.emails@example.com

Em nosso projeto, use plain-sql structure.sqlporque algumas coisas não funcionam bem schema.rbe é fácil de configurar o ambiente de teste.

Drone usa imagens próprias para o docker construir, a maioria delas está no repositório do docker, mas as novas versões podem não estar lá.

Clonei https://github.com/drone/images no servidor e executei:

docker build -rm -t bradrydzewski/ruby:2.1.1  builder/ruby/ruby_2.1.1/

Isso irá construir a imagem e adicioná-la ao catálogo local do docker.

Isso parece muito fácil para mim, mas passo algumas noites para descobrir. O drone não tem muitas informações no arquivo de log antes de receber qualquer webhook. O arquivo de log está localizado aqui/var/log/upstart/drone.log

PS Se você quiser usar drone com github para bitbucket, seu aplicativo drone deve ter url pública, usei localtunnel para isso.

Bom teste.