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.yml
como 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.sql
porque algumas coisas não funcionam bem schema.rb
e é 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.