¿Qué es GitLab?

GitLab es mucho más que un repositorio de código. Es una plataforma DevOps completa que cubre todo el ciclo de vida del software: planificación, desarrollo, CI/CD, seguridad, monitoreo y entrega. Nació como una alternativa open-source a GitHub, pero ha evolucionado hasta convertirse en un ecosistema integral que compite directamente con soluciones como Jenkins, SonarQube, Nexus y hasta Jira en ciertos escenarios.

Lo que distingue a GitLab de otras plataformas es su enfoque single application: no necesitas integrar diez herramientas distintas. Desde una sola interfaz gestionas repositorios, pipelines CI/CD, registries de contenedores, escaneo de seguridad, revisión de código y más. Esto reduce drásticamente la fricción operativa y los costos de mantenimiento.

GitLab vs GitHub: diferencias clave

La comparación más habitual es con GitHub. Ambas son excelentes, pero tienen enfoques distintos:

╔══════════════════════════════════╦══════════════════════╦══════════════════════╗
║          Característica          ║      GitLab         ║      GitHub          ║
╠══════════════════════════════════╬══════════════════════╬══════════════════════╣
║ Self-hosted (CE gratis)          ║  ✅ Sí              ║  ❌ Solo GHES pago   ║
║ CI/CD integrado                  ║  ✅ Sí (native)     ║  ✅ GitHub Actions   ║
║ Container Registry               ║  ✅ Integrado        ║  ✅ GitHub Packages   ║
║ Auto DevOps                       ║  ✅ Sí              ║  ❌ No               ║
║ Built-in monitoring/prometheus   ║  ✅ Sí              ║  ❌ Limitado         ║
║ Wiki integrado                   ║  ✅ Sí              ║  ✅ Sí               ║
║ Pages para sitios estáticos       ║  ✅ Sí              ║  ✅ GitHub Pages     ║
║ Auditoría de seguridad           ║  ✅ Avanzada        ║  ✅ Básica           ║
║ Límite repos privados (gratis)   ║  ✅ Ilimitados      ║  ✅ Ilimitados       ║
╚══════════════════════════════════╩══════════════════════╩══════════════════════╝

La gran ventaja de GitLab frente a GitHub es la capacidad de self-hosting. Para organizaciones que manejan datos sensibles o requieren control total sobre su infraestructura, instalar GitLab CE en servidores propios es una solución ideal.

Instalar GitLab CE en Debian 12

La instalación de GitLab Community Edition es directa. Eso sí, asegúrate de que el servidor tenga al menos 4 GB de RAM (2 GB pueden funcionar pero será muy lento). Estos son los pasos:

# 1. Instalar dependencias
apt update && apt install -y curl wget ca-certificates

# 2. Agregar el repositorio oficial de GitLab
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash

# 3. Instalar GitLab CE
EXTERNAL_URL="https://gitlab.midominio.com"
apt install -y gitlab-ce

# 4. Configurar la URL externa en /etc/gitlab/gitlab.rb
# Busca la línea external_url 'http://gitlab.example.com'
# y cámbiala por:
# external_url 'https://gitlab.midominio.com'

# 5. Reconfigurar GitLab para aplicar los cambios
gitlab-ctl reconfigure

La reconfiguración puede tomar varios minutos. Al finalizar, accede a https://gitlab.midominio.com y establece la contraseña del usuario root. GitLab genera automáticamente certificados Let’s Encrypt si configuras HTTPS.

Primer proyecto y GitLab Runner

Una vez instalado, crea tu primer proyecto desde la interfaz web o vía API. Para ejecutar pipelines CI/CD necesitas al menos un GitLab Runner:

# Instalar GitLab Runner en Debian
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | bash
apt install gitlab-runner -y

# Registrar el runner contra tu instancia
# Obtén el token desde Settings > CI/CD > Runners en tu proyecto
gitlab-runner register   --url https://gitlab.midominio.com   --registration-token TU_TOKEN_AQUI   --executor docker   --docker-image alpine:latest   --description "Docker Runner"

# Verificar que el runner está activo
gitlab-runner status

El runner ejecutará los jobs definidos en el archivo .gitlab-ci.yml de cada proyecto. En el próximo artículo profundizaremos en cómo construir pipelines de integración y despliegue continuo.

Infografía GitLab: Qué es y por qué usarlo como plataforma DevOps integral
Infografía: GitLab: Qué es y por qué usarlo como plataforma DevOps integral