Saltar al contenido principal

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.

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:

  1. Personal Access Token (PAT): Generado en User Settings > Access Tokens con el scope api.
  2. Project ID: Identificador numérico único del repositorio (disponible en la página principal del proyecto).
Dependencias de Estación de Trabajo
# 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

Utilice este método para eliminar un pipeline específico (ej: el #52) tras una validación fallida o detección de datos sensibles.

Terminal (Manual)
# 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"

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.

scripts/ops/gitlab-janitor.sh
#!/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."
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

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-TOKEN dentro del código de forma plana. Utilice el comando read (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: