Volver a insights

DevOps

CI/CD con Jenkins y Docker en Raspberry Pi: automatización reproducible sin costo cloud

Cómo construir un pipeline de CI/CD reproducible, gobernado y seguro con Jenkins en Docker y despliegue continuo en Raspberry Pi.

CI/CD ARM64

Pipeline Continuo Local

GitHub
Jenkins
Docker
ARM64
JenkinsCI/CDDockerRaspberry PiDevOpsAutomatización

La mayoría de los equipos pequeños llegan a CI/CD tarde: primero construyen, luego automatizan. El resultado es semanas de deuda operacional donde cada deploy es manual, no reproducible y dependiente de que alguien sepa el procedimiento. Jenkins sobre Docker cambia eso sin requerir presupuesto cloud.

La arquitectura es directa: un repositorio Git en GitHub dispara builds en Jenkins. Jenkins corre en Docker en tu laptop o servidor local. El Jenkinsfile define el pipeline como código: checkout, build, SSH al servidor de producción, git fetch + reset hard, docker compose up. Cada deploy es idéntico al anterior.

El error clásico es usar git pull en el servidor de producción. Si hay archivos modificados localmente —un docker-compose.yml editado manualmente, un Jenkinsfile de prueba— git pull aborta. La solución es git fetch origin && git reset --hard origin/main: sincronización forzada sin fricción, sin preguntas.

SSH key auth via sshagent reemplaza contraseñas en el pipeline. El credential almacenado en Jenkins contiene la clave privada; Jenkins Agent inyecta SSH_AUTH_SOCK en el proceso. El servidor de producción solo necesita la clave pública en authorized_keys. No hay contraseñas en el código ni en los logs.

El Dockerfile para Next.js en ARM64 requiere atención: la fase de build necesita memoria adicional (NODE_OPTIONS=--max-old-space-size=1536) o el proceso muere por OOM en Raspberry Pi. El multi-stage build (builder + runner) mantiene la imagen final liviana: solo los artefactos .next y node_modules de producción.

La lección de gobernanza es que los env vars no deben vivir en el Dockerfile ni en el docker-compose.yml del repo. Un archivo .env.production en el servidor, referenciado via env_file, separa los secretos del código. Jenkins resetea el repo en cada deploy, pero el .env.production persiste porque no está bajo control de versiones.

Un pipeline CI/CD propio no es hobby: es disciplina de plataforma. Saber exactamente qué ocurre en cada deploy, poder reproducirlo, revertirlo y auditarlo es más valioso que la conveniencia de un servicio gestionado. Y cuando todo corre en tu propia Raspberry Pi, la factura mensual es cero.

Lectura ejecutiva

Usa este tema como lente de liderazgo: identifica el riesgo operacional, define el resultado de negocio y luego elige la ruta de arquitectura o automatización.

Compartir LinkedIn X WhatsApp

Recibe insights empresariales

Arquitectura, automatización IA y liderazgo tecnológico en tu bandeja de entrada.

Tu correo se usa para gestionar esta suscripción. Puedes darte de baja en cualquier momento. Política de Privacidad