Desarrollo11 de abril de 2026

Primeros pasos con Drone CI, la solución open source

Si estás construyendo un proyecto personal o una startup y no quieres gastar demasiado en soluciones comerciales populares como Travis CI (que cuesta 69 $/mes), puedes montar tu propio Drone CI self-hosted en tu portátil, en la capa gratuita de AWS o en cualquier otro servidor.

Características de Drone CI:

  • Soporte multiplataforma
  • Configuración basada en YAML
  • Soporte para varios pipelines y lógica compleja en los pasos de build
  • Basado en Docker
  • Gratuito
  • Soporte para GitHub, GitLab y Bitbucket

Vamos a ejecutar Drone CI en un único host y con GitHub, pero también podrías usar una configuración con varias máquinas o Kubernetes, y otros proveedores de control de versiones. Encontrarás más información en la documentación oficial.

Consigue un host

Para esta prueba usamos una instancia EC2 de la capa gratuita de AWS, pero puedes usar lo que quieras. Si quieres seguir el mismo enfoque, sigue estos pasos:

  • Entra en la web de AWS;
  • Añade tu clave pública SSH en la sección Key Pairs de la página de EC2 (para acceder a tu instancia por SSH);
  • Crea una nueva instancia Ubuntu 18.04 de la capa gratuita en AWS;
  • Abre los puertos 80 y 443 en el Security Group de tu instancia; si la cuenta es nueva, usa launch-wizard-1, o búscalo en la descripción de tu instancia EC2.

Instala Docker

Para empezar a usar Drone solo necesitas Docker. Sigue las instrucciones de su documentación oficial. Comprueba que todo se ha instalado bien ejecutando "docker -v".


root@ip-172-31-23-205:~# docker -v
Docker version 18.09.3, build 774a1f4

Crea una aplicación OAuth

En los ejemplos usamos GitHub, pero también puedes usar GitLab, Bitbucket, Gitea y Gogs. Tienes más información en la documentación de Drone.

  • Entra en github.com/settings/developers e inicia sesión en tu cuenta personal, si ya tienes una, o créate una si no.
  • Haz clic en "new oAuth app".
  • Rellena el formulario como en el ejemplo de abajo.
Aplicación OAuth
Aplicación OAuth

Para rellenar bien este formulario, puedes usar la IP de tu servidor o asignarle un dominio. Hecho esto, podrás usar el Client ID y el Client Secret en los siguientes pasos.

Instala Drone

Es muy sencillo, basta con esto:


docker pull drone/drone:1

Y a continuación:


--volume=/var/run/docker.sock:/var/run/docker.sock \
--volume=/var/lib/drone:/data \
--env=DRONE_GITHUB_SERVER=https://github.com \
--env=DRONE_GITHUB_CLIENT_ID=652d1he1a62b6336bf0 \
--env=DRONE_GITHUB_CLIENT_SECRET=c8990176a4bfywe55ekj8c3cf6d0ffccb8e3a213e \
--env=DRONE_RUNNER_CAPACITY=2 \
--env=DRONE_SERVER_HOST=drone1.example.com \
--env=DRONE_SERVER_PROTO=https \
--env=DRONE_TLS_AUTOCERT=true \
--env=DRONE_USER_FILTER=tu-usuario \
--env=DRONE_USER_CREATE=username:tu-usuario,admin:true \
--publish=80:80 \
--publish=443:443 \
--restart=always \
--detach=true \
--name=drone \
drone/drone:1

Con esta configuración, Drone genera certificados SSL con Let's Encrypt, lo que nos permite acceder a la interfaz de Drone por https. Tu cuenta de usuario tendrá privilegios de administrador (DRONE_USER_CREATE), y conviene bloquear el acceso al servidor a cualquier otra persona (DRONE_USER_FILTER). En la documentación de Drone encontrarás la explicación del resto de variables.

Tu instancia ya debería estar en marcha: ¡inicia sesión y empieza a usarla!

Instancias
Instancias

Define tu pipeline

Con tu instancia de Drone CI lista, es el momento de activar el repositorio y crear tu pipeline. Primero, busca el repositorio en la barra de búsqueda y actívalo.

Pipeline
Pipeline

En la página de ajustes puedes cambiar la visibilidad del proyecto, añadir secrets (información sensible que necesitan los pasos de build) o añadir un cron job.

Ajustes
Ajustes

Definir pasos de build y pipelines en Drone es muy sencillo. Solo tienes que añadir a tu repositorio un archivo .drone.yml y describir los pasos con sintaxis YAML. Aquí tienes un ejemplo sencillo:


kind: pipeline
name: defaultsteps:
- name: frontend
image: node
commands:
- npm ci
- npm run test:unit

Ahora, cada vez que hagas push al repositorio, se lanzará un nuevo build en Drone CI.

Drone CI
Drone CI

Pero puedes hacer mucho más, según la complejidad de tu proyecto. Estos son algunos usos típicos:

  • Enviar notificaciones a Slack
  • Desplegar en Kubernetes
  • Subir imágenes a un registro de Docker
  • Levantar bases de datos u otros servicios necesarios para los tests
  • Ejecutar varios pipelines y trabajar con varias plataformas

Drone es un aliado del día a día que mejora mucho la estabilidad, la flexibilidad y la comodidad a la hora de ejecutar tests y desplegar código. Para saber más sobre Drone CI, visita drone.io/.

Cuéntanos tu caso

Escríbenos