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.