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.
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."
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
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: