Gestión Programática de Pipelines
En entornos de Ingeniería de Plataforma, el mantenimiento del historial de CI/CD es vital para la higiene del repositorio y la optimización de cuotas de almacenamiento. Este estándar define el procedimiento para interactuar con la API v4 de GitLab para la eliminación de registros de ejecución.
:::info Arquitectura de Repositorio Unificado
Siguiendo nuestra estrategia de Single Source of Truth (SSOT), el código fuente de las herramientas de limpieza reside en la raíz del proyecto (/scripts/ops/). Este documento importa dinámicamente el script real para garantizar que la documentación nunca quede obsoleta respecto al código operativo.
:::
1. Requisitos Previos (Alistamiento)
Para interactuar con la API, se requieren dos componentes de identidad y localización:
- Personal Access Token (PAT): Generado en User Settings > Access Tokens con el scope
api. - Project ID: Identificador numérico único del repositorio (disponible en la página principal del proyecto).
# Instalación de procesador JSON y cliente de transferencia
sudo apt update && sudo apt install curl jq -y
2. Protocolo de Ejecución
El flujo lógico para la purga de datos sigue una arquitectura de Identificación -> Validación -> Eliminación.
3. Comandos Operativos
- Eliminación Individual
- Purga Masiva (Janitor)
Utilice este método para eliminar un pipeline específico (ej: el #52) tras una validación fallida o detección de datos sensibles.
# Inyección segura de Token (Evita que quede en el historial de comandos)
read -sp "Ingrese su GitLab PAT: " GIT_TOKEN
export PROJ_ID="tu_id_de_proyecto"
export PIPE_ID="52"
# Ejecución del comando DELETE
curl --request DELETE \
--header "PRIVATE-TOKEN: $GIT_TOKEN" \
"https://gitlab.com/api/v4/projects/$PROJ_ID/pipelines/$PIPE_ID"
Para limpiezas recurrentes, se recomienda el uso del script automatizado. Este método procesa los registros de forma secuencial validando el código de respuesta HTTP.
# Asegúrese de estar en la raíz: ~/pascual-zamo.gitlab.io/
chmod +x ./scripts/ops/gitlab-janitor.sh
./scripts/ops/gitlab-janitor.sh
4. Código Fuente Operativo (SSOT)
El siguiente bloque de código se importa directamente desde el archivo scripts/ops/gitlab-janitor.sh. Cualquier modificación en el archivo físico se reflejará aquí automáticamente.
#!/bin/bash
# Script de limpieza masiva de pipelines (GitLab - API)
TOKEN="tu-token-aqui"
PROJECT_ID="tu-id-aqui"
# Obtener IDs de pipelines y eliminarlos en bucle
PIPELINES=$(curl --header "PRIVATE-TOKEN: $TOKEN" "https://gitlab.com/api/v4/projects/$PROJECT_ID/pipelines?per_page=20" | jq '.[].id')
for ID in $PIPELINES; do
echo "Eliminando Pipeline ID: $ID"
curl --request DELETE --header "PRIVATE-TOKEN: $TOKEN" "https://gitlab.com/api/v4/projects/$PROJECT_ID/pipelines/$ID"
done
echo "Proceso de limpieza completado."
:::tip Mantenimiento del Script
Si detecta un fallo en la lógica de borrado, edite el archivo directamente en la carpeta /scripts/ops/ de su entorno local. Al hacer git push, tanto el script como esta página de documentación se actualizarán en sincronía.
:::
5. Consideraciones de Seguridad y Auditoría
:::danger Advertencia de Integridad La eliminación de un pipeline es una operación irreversible. Se pierden logs de ejecución, artefactos y la trazabilidad de despliegues pasados. :::
- Gobernanza de Datos: No borre pipelines de producción. Mantenga al menos 90 días de historial para auditorías.
- Inyección de Secretos: Nunca guarde el
PRIVATE-TOKENdentro del código de forma plana. Utilice el comandoread(visto en la sección 3) o variables de entorno protegidas. - Privilegios: Se requiere rol de Owner para ejecutar borrados vía API en namespaces personales de GitLab.
Documentación Relacionada: