Drone es una herramienta de integración continua open source hecha en Go y Docker que nos permite correr tests, crear los artefactos de nuestro proyecto, notificar de los resultados, etc.
Vamos a ver como hacer la instalación y configuración en un servidor linux.
La instalación se hará sobre ubuntu server y asumiendo que funciona en el subdominio http://ci.mydomain.com
Prerequisitos
Ya que drone trabaja sobre Docker es necesario tenerlo instalado en nuestro servidor, si no lo tenemos podemos crear uno con Docker ya instalado usando la herramienta “One click app” de DigitalOcean, con un droplet de 512Mb será suficiente por el momento.
Si aún no tienes una cuenta en DigitalOcean puedes registrarte usando este link con el que obtendrás $10 de crédito.
Instalación
Desde la versión 0.4 drone viene empaquetado como una imagen de docker lo cual hace muy facil su uso, solo debemos ejecutar docker pull drone/drone:0.4
para descargar la última versión de la imagen y poder usarla.
Antes de ejecutar drone debemos crear un archivo de configuración, vamos a crear un archivo de configuración básico en /etc/drone/
llamado dronerc
con el siguiente contenido:
SERVER_ADDR=:8000
DATABASE_DRIVER=sqlite3
DATABASE_CONFIG=/var/lib/drone/drone.db
REMOTE_DRIVER=bitbucket
REMOTE_CONFIG=""
Para este ejemplo vamos a usar una base de datos sqlite ubicada en /var/lib/drone/
, la variable REMOTE_DRIVE
se refiere al servicio donde esta alojado el código del proyecto, drone tiene integraciones con Github, Bitbucket, Gitlab y Gogs, en la variable REMOTE_CONFIG
debemos poner la url de autenticación la cual varia deacuerdo al servicio que configuremos.
Ya que usaremos sqlite debemos instalarlo con
apt-get install libsqlite-dev
Configuración con Bitbucket
Para usar bitbucket debemos crear un Consumer desde nuestra cuenta para lo cual, una vez logeados, ingresamos a Bitbucket settings:
luego ingresamos a OAuth:
luego a New Consumer
Ahora debemos configurar el Consumer
El Name puede ser cualquiera por ejemplo: CI, en Callback URL ponemos: http://ci.mydomain.com/authorize y en URL podemos http://ci.mydomain.com
Luego de crear el Consumer veremos algo como la imágen siguiente:
Ahora en la variable REMOTE_CONFIG
ponemos lo siguiente https://bitbucket.org?client_id={client_id}&client_secret={client_secret}
donde debemos reemplazar {client_id}
por el valor de Key
y {client_secret}
por el valor de Secret
Con esto ya tenemos lista la configuración de parte de Bitbucket
Ejecutar drone
Como ya tenemos hecha la configuración e instalación de Drone vamos a ejecutarlo con el comando:
docker run \
--volume /var/lib/drone:/var/lib/drone \
--volume /var/run/docker.sock:/var/run/docker.sock \
--env-file /etc/drone/dronerc \
--restart=always \
--publish=80:8000\
--detach=true \
--name=drone \
drone/drone:0.4
ahora cuando accedamos a http://ci.mydomain.com
Ahora podremos iniciar sesión con nuestra cuenta de Bitbucket y activar los repositorios que queramos.
Para mayor información podemos consultar la documentación oficial.