Saltar al contenido principal

glab — GitLab CLI

Qué es

Cliente oficial de GitLab para la terminal. Permite crear y revisar Merge Requests, ver pipelines, gestionar issues y autenticarse con el GitLab de Wiedii directamente desde el shell, sin abrir el navegador.

Por qué la usamos en Wiedii

Wiedii usa GitLab en https://gitlab.wiedii.co/. glab es la forma de interactuar con él desde terminal: crear MRs desde git flow publish, revisar el estado de pipelines, y consultar issues vinculados a ramas. Integra directamente con el flujo git-flow-next.

Instalación

brew install glab
glab --version # verificar

Configuración estándar

Archivo de configuración

En macOS, glab guarda su configuración en:

~/Library/Application Support/glab-cli/config.yml

Nota: glab usa .yml para su propio archivo de configuración. La política Wiedii de usar .yaml aplica a archivos que nosotros creamos (lefthook.yaml, docker-compose.yaml, etc.) — no a los archivos internos de herramientas de terceros.

Configurar los valores estándar Wiedii con los comandos:

# Host por defecto — CRÍTICO: sin esto glab apunta a gitlab.com y da 401
glab config set host gitlab.wiedii.co

# Protocolo Git global — siempre SSH
glab config set git_protocol ssh

# Telemetría — OBLIGATORIO desactivar
glab config set telemetry false

# Estilo Markdown en terminal
glab config set glamour_style dark

# Configuración específica del host Wiedii
glab config set -h gitlab.wiedii.co git_protocol ssh
glab config set -h gitlab.wiedii.co api_protocol https

Verificar:

glab config get host # ✅ gitlab.wiedii.co
glab config get telemetry # ✅ false
glab config get git_protocol # ✅ ssh

⚠️ telemetry: false es obligatorio. El valor por defecto de glab es true, lo que envía datos de uso a la instancia GitLab. En Wiedii se desactiva siempre.

Autenticación con el GitLab de Wiedii

glab auth login --hostname gitlab.wiedii.co

El wizard pedirá:

  1. Protocol: HTTPS
  2. Token: ir a https://gitlab.wiedii.co → avatar → Edit profileAccess Tokens → crear token con:
    • Scopes: api, read_repository, write_repository
    • Validez: máximo 3 meses — poner fecha de expiración explícita, nunca "sin expiración"
  3. Pegar el token (no se almacena en el vault — ver nota de seguridad abajo)
glab auth status # ✅ Logged in to gitlab.wiedii.co as @tunombre

# Desactivar telemetría — obligatorio tras autenticar
glab config set telemetry false
glab config get telemetry # ✅ false

🔐 Seguridad: glab guarda el token en el keychain del sistema, no en texto plano. Nunca copiar el token a ningún archivo del vault.

🔄 Rotación de tokens: cada desarrollador es responsable de rotar su propio token antes de que expire. Expiración máxima: 90 días. Al rotar: glab auth login --hostname gitlab.wiedii.co con el nuevo token.

Completion en zsh

Agregar a ~/.zshrc:

if command -v glab >/dev/null 2>&1; then
eval "$(glab completion -s zsh 2>/dev/null || echo "")"
fi

Recargar para que tome efecto:

exec zsh # aplicar en el terminal actual — repetir en cada terminal abierta

Comandos clave

Merge Requests

glab mr es un comando por proyecto: debe ejecutarse desde un directorio con un remote de GitLab configurado, o especificar el proyecto con -R grupo/proyecto.

# Ver mis MRs abiertas (desde dentro de un repo con remote)
glab mr list --author @me

# Ver mis MRs de un proyecto específico (desde cualquier directorio)
glab mr list --author @me -R wildcat/wiedii-dev-onboarding

# Ver MRs que requieren mi revisión
glab mr list --reviewer @me

# Ver detalle de una MR
glab mr view <id>

# Aprobar una MR
glab mr approve <id>

# Ver comentarios de una MR
glab mr note <id>

Pipelines / CI

# Ver estado del pipeline de la rama actual
glab pipeline status

# Ver todos los pipelines del proyecto
glab pipeline list

# Ver logs de un job
glab pipeline ci view

# Relanzar un pipeline fallido
glab pipeline retry <id>

Issues

# Ver issues asignados a mí
glab issue list --assignee @me

# Crear un issue rápido
glab issue create --title "Título" --label "bug"

Repositorio

# Abrir el repo en el navegador
glab repo view --web

# Clonar un repo de Wiedii
glab repo clone wiedii/nombre-repo

Integración con git-flow-next

git flow publish acepta push options de GitLab que glab complementa:

# Publicar rama + crear MR (git-flow-next hace el push con opciones de GitLab)
git flow publish \
-o merge_request.create \
-o merge_request.target=develop \
-o "merge_request.title=feat(scope): descripción [TK0001]"

# Luego revisar la MR creada
glab mr list --author @me

Troubleshooting rápido

ERROR 401 Unauthorized apuntando a gitlab.com:

# glab usa gitlab.com por defecto — hay que cambiarlo explícitamente
glab config set host gitlab.wiedii.co
glab config get host # ✅ gitlab.wiedii.co

No git remotes found:

# glab mr es por proyecto — necesita un remote o el flag -R
# Opción 1: ejecutar desde un directorio con remote configurado
cd ~/Docker/tu-proyecto && glab mr list --author @me

# Opción 2: especificar el proyecto explícitamente
glab mr list --author @me -R wildcat/wiedii-dev-onboarding

glab dice "hostname not found":

glab auth login --hostname gitlab.wiedii.co

Token expirado:

glab auth logout --hostname gitlab.wiedii.co
glab auth login --hostname gitlab.wiedii.co # generar nuevo token

Completion no funciona:

glab completion -s zsh > /dev/null # debe salir sin error
# Si falla: brew reinstall glab
exec zsh # recargar shell

Referencias